Как я могу определить, является ли пакет RTP / RTCP?

StackOverflow https://stackoverflow.com/questions/2916177

  •  04-10-2019
  •  | 
  •  

Вопрос

Я использую SharpPCAP, который построен на WinPCAP для захвата трафика UDP. Моя конечная цель - захватить аудиоданные от H.323 и сохранить эти телефонные разговоры как WAV файлы. Но первым делом - сначала - мне нужно выяснить, что мои пакеты UDP пересекают ник.

SharpPCAP предоставляет класс UDPPacket, который дает мне доступ к PayLoadDate из сообщения. Но я не уверен, что делать с этими данными. Это байт [] массив, и я не знаю, как определить, если это RTP или пакет RTCP.

Я гугул эту тему, но там не так много. Любая помощь ценится.

Это было полезно?

Решение

Посмотрите на определения для пакетов RTP и RTCP в RFC 3550.:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X|  CC   |M|     PT      |       sequence number         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           synchronization source (SSRC) identifier            |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|            contributing source (CSRC) identifiers             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Я не буду воспроизводить легенде на все вышеперечисленное - это довольно долго - но посмотрите на Раздел 5.1..

С этим в руке вы увидите, что вы не можете сделать, чтобы определить, а. Пакет содержит RTP / RTCP. Лучше всего будет понюхать, как предложили другие плакаты, переговоры по борьбе с медиа. Второе наилучшее было бы некоторое сортировка шаблона, сопоставившись над последовательностью пакетов: первые два бита будут 10, а затем следующие два бита, являющиеся постоянными, а затем биты с 9 по 15, а затем 16 -> 31 наращивание, а также 16 -> 31. скоро.

Другие советы

Я бы посмотрел на детекторы пакетов в Wireshark, что может декодировать наиболее распространенные протоколы.

Я считаю, что вам нужно посмотреть на пакеты SIP, которые приходят перед пакетами RTP.

Есть Обсуждение этой проблемы на сайте pcap.net.

Если коммуход проводится над RTSP, посмотрите на порт UDP, который согласуется при настройке.

Порт UDP скажет вам, если это RTP или RTCP (также стоит отметить, что RTP обычно проводится по четные номера портов и RTCP на нечетных).

Наконец, если вы общаетесь через RTSP, вы можете принять список номеров полезных нагрузок из файла SDP из описания, а затем проверьте тип полезной нагрузки в заголовке RTP, чтобы сказать кодеке, необходимое для декодирования полезной нагрузки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top