2014-06-24 5 views
1

저는 RTP 헤더에서 데이터를 검색하기 위해 PacketDotNet을 사용하고 있습니다. 그러나 시간 소인이 음수 값이되는 경우가 있습니다.타임 스탬프 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

RTCP 패킷 때문일 수 있습니다. RTP 데이터가 전화에서 오는 경우 전화는주기적인 RTCP 보고서를 보냅니다. 그들은 약 200 번째 패킷마다 튀어 나오는 것처럼 보입니다. 형식이 다르며 코드가 동일한 방식으로 읽는 중일 수 있습니다. RTCP 패킷을 처리해야합니다.

패킷 형식 : 문제는 내가 :) 문제가 해결되었습니다 입력 "긴"로 전환, 정수 변수 결과에이었다이었다이 경우 http://www.cl.cam.ac.uk/~jac22/books/mm/book/node162.html

+0

HI @ 콘래드 드 웻 –