Frage

Ich bin mit SharpPcap, die auf WinPCap zu Capture-UDP-Verkehr gebaut wird. Mein Endziel ist es, die Audiodaten von H.323 zu erfassen und diese Telefongespräche als WAV-Dateien zu speichern. Aber erste, was zuerst - ich brauche, um herauszufinden, was meine UDP-Pakete, die NIC kreuzen.

SharpPcap bietet eine UdpPacket Klasse, die mir den Zugang zum PayloadData der Nachricht gibt. Aber ich bin nicht sicher, was mit diesen Daten tun. Es ist ein Byte [] Array und ich weiß nicht, wie zu bestimmen, gehen, wenn es ein RTP oder RTCP-Paket.

Ich habe dieses Thema gegoogelt, aber es gibt nicht viel da draußen. Jede Hilfe ist willkommen.

War es hilfreich?

Lösung

Schauen Sie sich die Definitionen für RTP und RTCP-Pakete in 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             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ich werde nicht die Legende für alle der oben genannten reproduzieren - es ist ziemlich lang - aber einen Blick auf Abschnitt 5.1 .

Damit in der Hand Sie dort sehen werden ist nicht viel Sie tun können, um festzustellen, ob a Paket RTP / RTCP enthält. Das Beste von allem wäre zu schnüffeln, wie andere Plakate haben vorgeschlagen, die Medien Verhandlung streamen. Zweit wäre am besten einiger sort've Mustervergleich über eine Sequenz von Paketen sein: Die ersten beiden Bits 10 sind, gefolgt von den nächsten zwei Bits konstant ist, gefolgt von den Bits 9 bis 15 konstant, dann 16 -> 31 inkrementiert, und so weiter.

Andere Tipps

ich an den Paketdetektoren in Wireshark aussehen würde, die am häufigsten verwendeten Protokolle zur Verfügung dekodieren kann.

Ich glaube, Sie an den SIP-Pakete suchen müssen, die vor den RTP-Pakete kommen.

Es gibt eine Diskussion zu diesem Thema auf Pcap.Net Website .

Wenn Nachrichtenübermittlung über RTSP fertig sind, werfen Sie einen Blick auf den UDP-Port, der auf SETUP ausgehandelt wird.

der UDP-Port werden Ihnen sagen, wenn es RTP oder RTCP (auch erwähnenswert, dass RTP in der Regel sogar über Portnummern und RTCP auf ungerade gemacht wird).

schließlich, wenn Sie über RTSP kommunizieren Sie die Liste der Nutzlast Zahlen aus der SDP-Datei nehmen von der DESCRIBE und überprüfen dann die Nutzlast in den RTP-Header dem Codec Sie die Nutzlast dekodieren müssen sagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top