音视频入门基础:RTP专题(8)——使用Wireshark分析RTP

一、引言

通过Wireshark可以抓取RTP数据包,该软件可以从Wireshark · Go Deep 下载。

二、通过Wireshark抓取RTP数据包

首先通过FFmpeg将一个媒体文件转推RTP,生成RTP流:

ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec copy -an -f rtp rtp://192.168.0.103:6005 -acodec copy -vn -sdp_file XXX.sdp -f rtp rtp://192.168.0.103:7005

然后打开Wireshark,选择网卡。这里由于RTP客户端和服务器都在同一台电脑主机上,所以用本地回环网络抓包。实际上RTP客户端和服务器不在同一台电脑主机上也可以通讯的,只要关闭防火墙或开放端口就可以了:

进行协议过滤。显示过滤器输入“RTP”,过滤出协议为RTP的数据包,但是除了RTP外还会显示协议为ICMP的数据包:

所以显示过滤器输入“rtp && !icmp”,把ICMP协议排除掉,这样界面就只显示RTP数据包了。选中其中一个RTP数据包,可以查看其Header:

当RTP中有多个媒体流时可以通过ssrc(synchronization source identifier)过滤rtp流。在一个RTP会话中,每个媒体流的SSRC都不同:

rtp.ssrc == XXX

其中“XXX”为RTP的Synchronization Source identifier: 

三、UDP层分析RTP流

通过Wireshark查看RTP报文,我们可以发现下面FFmpeg命令

ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec copy -an -f rtp rtp://192.168.0.103:6005 -acodec copy -vn -sdp_file XXX.sdp -f rtp rtp://192.168.0.103:7005

的本质是创建了一个UDP客户端,该客户端将媒体文件input.mp4的视频数据发送到IP为192.168.0.103的UDP服务器的6005端口: 

 将媒体文件的音频数据发送到IP为192.168.0.103的UDP服务器的7005端口:

由于是基于UDP,所以不保证可靠交付。也就是说,如果对面UDP服务器没有收到数据、服务器端口崩溃甚至服务器本身没有启动,UDP客户端是无法知道的,通过Wireshark也无法分析出来。

四、通过Wireshark分析RTP流

“电话” -> “RTP” -> “RTP流分析”:

可以显示这段RTP流的丢包数等信息:

五、提取出H.264裸流

GitHub - hongch911/WiresharkPlugin: The H265 H264 PS PCM AMR SILK plugin for Wireshark Lua 下载rtp_h264_export.lua:

将该脚本放到Wireshark的plugins目录:

重新打开Wireshark,可以看到“工具”菜单多了个“Video”选项。“工具” -> “Video” -> “Export H264”:

Export All:

如果提示:“Not found SPS for XXX,Not found PPS for XXX,it might not be played!”,说明RTP流中不包含SPS和PPS。比如执行《音视频入门基础:RTP专题(2)——使用FFmpeg命令生成RTP流》中的“媒体文件转推RTP的FFmpeg命令”生成的RTP流中是不包含SPS和PPS的,SPS和PPS在SDP文件的sprop-parameter-sets参数中携带。具体可以参考:《音视频入门基础:RTP专题(3)——SDP简介》。这时由于缺乏SPS和PPS,导出的H.264裸流无法被播放器播放:

但是如果我们抓取的是网络摄像机的RTP数据包(网络摄像机通过RTSP控制多媒体流的播放、暂停、快进等操作,通过RTP负责实际的多媒体数据传输),是可以成功提取出H.264裸流的。因为网络摄像机的RTP视频流包含SPS和PPS:

导出成功:

点击上图的“Browser”按钮,可以看到生成了XXX.264文件。该文件即为AnnexB包装的H.264裸流文件(具体可以参考:《音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件》):

该文件可以用vlc等播放器播放:

也可以用Elecard Stream Analyzer打开分析:

猜你喜欢

转载自blog.csdn.net/u014552102/article/details/145356692