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

一、引言

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

二、通过Wireshark抓取RTP数据包

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

bash 复制代码
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外还会显示协议为ICMP的数据包:

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

当RTP中有多个媒体流时可以通过ssrc过滤rtp流:

bash 复制代码
rtp.ssrc == XXX

其中"XXX"为RTP的Synchronization Source identifier:

三、通过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简介》:

相关推荐
测试秃头怪2 小时前
如何评估自动化测试脚本的编写时间和维护工作量?
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
中微极客7 小时前
Kling AI 3.0:AI视频生成的工程化跃迁
人工智能·音视频
开开心心就好8 小时前
免费格式转换工具视频音频文档都能转
人工智能·智能手机·ocr·电脑·音视频·散列表·启发式算法
USB_ABC9 小时前
南京军区训练基地:混合矩阵赋能军事训练智慧化协同升级
矩阵·音视频
中微极客11 小时前
Seedance 2.5深度解析:30秒4K视频生成与50路多模态参考的工程实践
人工智能·音视频
sweetone11 小时前
一台磁带随身听的摩机(查出LAG668芯片低音差的原因)
经验分享·音视频
程序员杰哥11 小时前
接口测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
潜创微科技12 小时前
HDMI1.3无线投屏简介
音视频
西安老张(AIGC&ComfyUI)12 小时前
第027章:ComfyUI视频制作LTX-2.3模型(文生视频)
aigc·音视频·数字人·comfyui
USB_ABC13 小时前
郑州建业地产:高清音视频矩阵构筑智慧社区全域物联管控体系
矩阵·音视频