一个视频一个音频 同时用2个Jrtplib会话传输,视频传输好像比音频快,怎么同步?
问题是这样的 ,局域网测试的,客户段采集到的视频,发送到服务器,服务器转发给每个登录的客户端,其实就是多对多的概念,每个客户端都能收到服务器转发的其他客户端的视频和音频进行显示和播放,视频显示的话没有问题,音频就出现延迟,和视频不同步,一个客户端说话,其他客户端都可以收到视频,包括视频的动作也不延迟,但是音频就出现其他客户端延迟等一会儿才能听见声音,
具体客户端和服务端设置参数如下
客户端发送视频会话参数:
发送:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/90000.0);//时间戳单位
m_client_send_Video.SetDefaultMark( false );
m_client_send_Video.SetDefaultPayloadType(96);
m_client_send_Video.SetDefaultTimestampIncrement(3600); //视频
接收:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/90000.0);//时间戳单位
m_client_recv_Video //没有设置会话参数
服务器端接收视频会话参数
接收:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/90000.0); //时间戳单位
m_Server_Recv_Video.SetDefaultPayloadType( 96 );
m_Server_Recv_Video.SetDefaultMark( false );
m_Server_Recv_Video.SetDefaultTimestampIncrement( 3600);
发送:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/90000.0); //时间戳单位
m_Server_Send_Video->SendPacket((void *)dataBuffer,dataLength,0,false,100);//服务器转发视频
客户端发送音频会话参数:
发送:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/8000); //时间戳单位
m_client_send_Audio.SetDefaultMark( false );
m_client_send_Audio.SetDefaultPayloadType(0);
m_client_send_Audio.SetDefaultTimestampIncrement(400); //音频
接收:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/8000); //时间戳单位
m_client_Recv_Audio//没有设置参数
服务器端接收音频会话参数
接收:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/8000); //时间戳单位
m_Server_Recv_Audio.SetDefaultMark( false );
m_Server_Recv_Audio.SetDefaultPayloadType(0);
m_Server_Recv_Audio.SetDefaultTimestampIncrement(400); //音频
发送:
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/8000); //时间戳单位
m_Server_Send_Audio.SetDefaultTimestampIncrement(400); //服务器转发音频