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

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

SharpPCap обеспечивает класс UdpPacket, который предоставляет мне доступ к PayloadData сообщения. Но я не уверен, что делает с этими данными. Это - Байт [] массив, и я не знаю, как пойти об определении, если это - пакет RTCP или RTP.

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

11
задан Chris Holmes 26 May 2010 в 19:38
поделиться

3 ответа

Посмотрите на определения пакетов 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 будут увеличиваться, и так далее.

5
ответ дан 3 December 2019 в 11:03
поделиться

Я бы посмотрел на детекторы пакетов в Wireshark, которые могут декодировать большинство распространенных протоколов.

2
ответ дан 3 December 2019 в 11:03
поделиться

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

На сайте Pcap.Net есть обсуждение этого вопроса.

0
ответ дан 3 December 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: