RTP中SSRC导致的媒体流中断

在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即可。

你可能感兴趣的:(网络)