1. 程式人生 > >RTP中SSRC導致的媒體流中斷

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