当前位置:  开发笔记 > 编程语言 > 正文

如何确定数据包是否为RTP/RTCP?

如何解决《如何确定数据包是否为RTP/RTCP?》经验,为你挑选了1个好方法。

我正在使用基于WinPCap构建的SharpPCap来捕获UDP流量.我的最终目标是从H.323捕获音频数据并将这些电话对话保存为WAV文件.但首先要做的是 - 我需要弄清楚我的UDP数据包是通过网卡的.

SharpPCap提供了一个UdpPacket类,使我可以访问消息的PayloadData.但我不确定这些数据是做什么的.它是一个Byte []数组,我不知道如何确定它是否是RTP或RTCP数据包.

我用Google搜索了这个主题,但那里没有多少.任何帮助表示赞赏.



1> Frank Sheara..:

查看RFC 3550中 RTP和RTCP数据包的定义:

 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递增,并且以此类推。

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有