stophin 2016-12-25 14:31 采纳率: 50%
浏览 2072
已结题

请问socket进行视频传输时外网传输速度很慢怎么办

我在本地测试速度还很好的,使用240x320的摄像头,每一帧size大概在
3~4万(byte)之间(JPEG传输),本地测试100%传输。但是一到外网,比如我从本地
传输到外网服务器,然后经过外网服务器获取连接到它的我本地的另外一个
客户端,经过NAT转换后从外网又发回来,获取以后直接打通NAT进行P2P传输,
与本地测试的唯一区别就是地址换成了外网IP,但是这时传输只有12/3~4万(byte),
这个速度业太慢了~不知道是为什么,有大神知道其中的原因吗?
发送接收协议是:
发送端使用sendto发送"push 30000",紧接着再使用sendto发送jpeg数据
接收端使用recvfrom获取到字节数int size=30000,紧接着
使用dummy[1000000]按照下面的recvfrom来接收数据:
int ret = recvfrom(PrimaryUDP, dummy, size, 0, (sockaddr *)&remote, &fromlen);
两次发送和两次接收之间都是没有任何延时的。
本地测试ret为size的大小,但是外网传输时ret为12或者更少的时候只有6!
我尝试过使用while(total < size) total += recvfrom(...);
但是结果还是只有12byte因此循环就等了好久。。。
请大神指教,如果实在不行希望能指教一下如何压缩数据(我认为压缩数据仍旧
不能挽救只接收到12byte的事实,应该是协议有些问题,求教有经验的指教视频
比如说直播间的数据传输是怎样的协议)

  • 写回答

2条回答 默认 最新

  • devmiao 2016-12-25 15:53
    关注
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?