当前位置: 首页 > news >正文

音视频入门基础: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外还会显示协议为ICMP的数据包:

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

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

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简介》:

http://www.lryc.cn/news/532330.html

相关文章:

  • OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化
  • SpringUI Web高端动态交互元件库
  • 解密企业安全密码:密钥管理服务如何重塑数据保护?
  • 基于keepalived+GTID半同步主从复制的高可用MySQL集群
  • 图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案
  • Java 大视界 -- Java 大数据在智能教育中的应用与个性化学习(75)
  • 从零手写Spring IoC容器(二):bean的定义与注册
  • 《大模型面试宝典》(2025版) 发布了
  • AWS门店人流量数据分析项目的设计与实现
  • 出租车特殊计费表算法解析与实现
  • 文档解析技术:如何高效提取PDF扫描件中的文字与表格信息?
  • 【2】高并发导出场景下,服务器性能瓶颈优化方案-异步导出
  • 【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力
  • frida 通过 loadLibrary0 跟踪 System.loadLibrary
  • 【2025最新计算机毕业设计】基于SSM的智能停车场管理系统【提供源码+答辩PPT+文档+项目部署】(高质量源码,可定制,提供文档,免费部署到本地)
  • 【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
  • 文本生图的提示词prompt和参数如何设置(基于Animagine XL V3.1)
  • 快速提取Excel工作簿中所有工作表的名称?
  • 【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP
  • Node.JS 版本管理工具 Fnm 安装及配置(Windows)
  • labview通过时间计数器来设定采集频率
  • 汇编JCC条件跳转指令记忆
  • HTML排版标签、语义化标签、块级和行内元素详解
  • 【回溯+剪枝】单词搜索,你能用递归解决吗?
  • 《深度揭秘LDA:开启人工智能降维与分类优化的大门》
  • Linux(CentOS)安装 MySQL
  • C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输
  • 面试题-SpringCloud的启动流程
  • MySQL基础知识
  • nas-群晖docker查询注册表失败解决办法(平替:使用SSH命令拉取ddns-go)