在RTP协议中, 定义同步源(SSRC,Synchronization source)为RTP包流的源,用RTP报头中32位数值的SSRC标识符进行标识,使其不依赖于网络地址。通常麦克风,音频接口,摄像头,视频接口的变化,都会导致SSRC的变化。
在OPAL和OpenH323中,默认同一Session中RTP流的SSRC发生变化后,RTP包即丢弃,这样会导致音频或者视频的媒体流中断,且不能恢复,需要将默认值改为允许RTP流的SSRC发生变化,代码在rtp.cxx中,如下:
if (ignoreOtherSources
&& frame.GetSyncSource() != syncSourceIn) {
PTRACE(2, "RTP\tPacket from SSRC=" << frame.GetSyncSource()
<< " ignored, expecting SSRC=" << syncSourceIn);
return e_IgnorePacket; // Non fatal error, just ignore
}
需要将ignoreOtherSources设置为false即可。