¥¥¥¥¥传输中音频和视频交错的问题???期待高手........¥¥¥¥
问题描述:利用TCP传输音视频数据的时候,由于只用了一个端口来接收数据,利用包头来区分音视频数据的,可是现在发现音视频数据发生了干扰,即一个包中即包含了音频数据,也包含了视频数据,导致在客户端根本就解码不出来。
测试的时候只发送音频数据的话,就会发现在接收端几个数据包是一起接收的,假设一个音频数据包为212字节,在媒体服务器端接收的时候发现居然是424字节和636字节的数据包,甚至最大达到5个数据包在一起的情况,只发送视频数据同样也有该问题,音视频同发的时候就全部混淆了。利用Socket选项发现TCP和UDP的发送和接收缓冲区的大小都为8192字节,利用setsockopt把发送和接收缓冲区的大小该为2048(如果再小就不能容纳一个视频数据包了),再加上::setsockopt(teachersock, IPPROTO_TCP, TCP_NODELAY, (char *)&optval, sizeof(BOOL));也同样解决不了。可是改用UDP的传输方式来传输的话,就没任何问题,都是一个个的包分开来的。
由于视频数据包的大小不能确定,因为视频有图象晃动的情况下数据包比较大,而静止时很小,所以不可能按照大小来分开一个包。
由于某种特殊原因,所以想用TCP来传送,请问高手怎么解决这个问题?