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

devtools/2025/2/3 21:14:29/

一、引言

通过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过滤rtp流:

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.ppmy.cn/devtools/155833.html

相关文章

Qt事件处理:理解处理器、过滤器与事件系统

1. 事件 事件 是一个描述应用程序中、发生的某些事情的对象。 在 Qt 中,所有事件都继承自 QEvent ,并且每个事件都有特定的标识符,如:Qt::MouseButtonPress 代表鼠标按下事件。 每个事件对象包含该事件的所有相关信息&#xff…

系统思考—决策

“人类理性是有限的,我们在复杂的世界中做出决策时,往往采用简化的模型。”——贝尔经济学奖得主赫伯特西蒙 面对复杂问题,我们往往没有足够的信息、时间或精力去做出完美决策,于是,我们依赖经验法则、直觉判断&#…

实现Ajax请求、实现深拷贝

文章目录 1 实现Ajax请求2 实现深拷贝2.1 方法1:JSON.stringify()2.2 方法2:函数库lodash的_.cloneDeep方法2.3 方法3:手写实现深拷贝函数 1 实现Ajax请求 Ajax(Asynchronous JavaScript and XML),是指通过…

【AI】【本地部署】OpenWebUI的升级并移植旧有用户信息

【背景】 OpenWebUI的版本升级频率很高,并会修改旧版本的Bug,不过对于已经在使用的系统,升级后现有用户信息都会丢失,于是研究如何在升级后将现有的用户信息移植到升级后版本。 【准备工作】 OpenWebUI的升级步骤在Docker中有现…

Hive详细讲解-基础语法快速入门

文章目录 1.DDL数据库相关操作1.1创建数据库1.2指定路径下创建数据库1.3添加额外信息创建with dbproperties1.4查看数据库 结合like模糊查询 2.查看某一个数据库的相关信息2.1.如何查看数据库信息,extended可选2.2修改数据库 3.Hive基本数据类型4.复杂数据类型5.类型…

抓取接口数据,并存放到数据库中_怎么把一些公开的接口 扒下来放到自己的数据中

import pymysql import json import jsonpath get 请求 def get(i): url ‘https://www.buyao.tv/appapi/by_mvlist.php?appkeyBYMUSICOFFVN0DtKGcebowgEPLtASJfBBn6iOTQ&aclist&ordering1&cityid0&page’i‘&userid1’ #print(‘this is url*********…

垃圾回收之弱引用+实例说明+weakSet+weakMap

文章目录 垃圾回收垃圾回收原理常见的垃圾回收方法1. 标记清除算法(Mark and Sweep)2. 标记整理算法(Mark and Compact)3. 复制算法(Copying)4. 分代回收算法(Generational Garbage Collection&…

Python爬虫:requests模块深入及案例

* [案例二:输入单词获取百度翻译的结果](about:blank#_40)* [案例三:获取豆瓣电影的评分前几名的电影信息](about:blank#_87)* [案例四:通过在药监局网站中的企业id值获取企业信息](about:blank#id_121)案例一:获取CSDN关键…