2014-06-24 115 views
1

我正在使用PacketDotNet從RTP頭中檢索數據。但有時候時間戳是負值。獲取時間戳rtp包

GetTimeStamp(UdpPacket packetUdp) 
{ 

     byte[] packet = packetUdp.PayloadData; 
     long timestamp = GetRTPHeaderValue(packet, 32, 63); 
     return timestamp; 

} 

private static int GetRTPHeaderValue(byte[] packet, int startBit, int endBit) 
    { 
     int result = 0; 

     // Number of bits in value 
     int length = endBit - startBit + 1; 

     // Values in RTP header are big endian, so need to do these conversions 
     for (int i = startBit; i <= endBit; i++) 
     { 
      int byteIndex = i/8; 
      int bitShift = 7 - (i % 8); 
      result += ((packet[byteIndex] >> bitShift) & 1) * 
         (int)Math.Pow(2, length - i + startBit - 1); 
     } 
     return result; 
    } 

回答

0

它可能是由R​​TCP數據包造成的。如果RTP數據來自電話,則電話會定期發送RTCP報告。他們似乎大約每隔200分鐘就會彈出一次。格式不同,你的代碼可能以同樣的方式讀取 - 你將需要處理RTCP數據包。

的報文格式:http://www.cl.cam.ac.uk/~jac22/books/mm/book/node162.html

+0

HI @康拉德 - 脫溼這種情況下,問題是,我是在可變結果作爲整數,切換到「長」鍵入該問題已經解決:) –