问题描述:利用TCP传输音视频数据的时候,由于只用了一个端口来接收数据,利用包头来区分音视频数据的,可是现在发现音视频数据发生了干扰,即一个包中即包含了音频数据,也包含了视频数据,导致在客户端根本就解码不出来。 测试的时候只发送音频数据的话,就会发现在接收端几个数据包是一起接收的,假设一个音频数据包为212字节,在媒体服务器端接收的时候发现居然是424字节和636字节的数据包,甚至最大达到5个数据包在一起的情况,只发送视频数据同样也有该问题,音视频同发的时候就全部混淆了。利用Socket选项发现TCP和UDP的发送和接收缓冲区的大小都为8192字节,利用setsockopt把发送和接收缓冲区的大小该为2048(如果再小就不能容纳一个视频数据包了),再加上::setsockopt(teachersock, IPPROTO_TCP, TCP_NODELAY, (char *)&optval, sizeof(BOOL));也同样解决不了。可是改用UDP的传输方式来传输的话,就没任何问题,都是一个个的包分开来的。
由于视频数据包的大小不能确定,因为视频有图象晃动的情况下数据包比较大,而静止时很小,所以不可能按照大小来分开一个包。 由于某种特殊原因,所以想用TCP来传送,请问高手怎么解决这个问题?
由于视频数据包的大小不能确定,因为视频有图象晃动的情况下数据包比较大,而静止时很小,所以不可能按照大小来分开一个包。 由于某种特殊原因,所以想用TCP来传送,请问高手怎么解决这个问题?
解决方案 »
- 关于CIE 色度的坐标计算 请教~~~~
- cricheditdoc cricheditview CRichEditCntrItem 如何利用MFC新建这样一个工程呢?
- 为什么会有不支持C语言编程的单片机呢?
- 关于windows中的函数定义
- 请教 vb里一个浏览目录的控件 在vc里怎么实现呢
- ATL编写COM组件时,如何为组件接口中的方法的参数设定缺省值?
- 新手写DLL,请教?
- 当我用capCaptureSequence函数摄像时,应该怎么记时用SetTimer好象不行,不能响应SetTimer函数,谢谢
- 多关键字匹配算法,IDS ,网络安全,感兴趣的哥们和我联系。一起分享编程的乐趣,特别是算法,字符串匹配算法!
- 怎么在vs2010中使用C++读excel表格中的内容,最好使用vs自带的库函数
- 初学新手请教问题!!!!在线等~~~
- 求助与各位大虾,有谁编译过《windows网络编程》2版的完成端口模型,是高手请进!!
必须象fastxyf(迅影)说的那样处理。
还有,你最好用setsockopt把socket缓冲区设置的大一点,我一般接受视频都是设置成32768*4。
太小对于tcp他会影响发送端的处理,对于udp会导致数据在接受端网卡上被丢掉,导致丢包。
但缓冲大小和tcp的粘包没有关系。
谢谢各位。
---------
to:hurryboylqs(中山三郎)
我弄的是网络的部分,他们把数据传给我,我负责发送和接收,怎么获得音视频数据我不太清楚,关于传输方面的问题,可以交流,呵呵