wireshark提取视频数据之RTP包中提取H264和H265

news/2024/3/29 17:13:56/文章来源:https://blog.csdn.net/water1209/article/details/127927245

wireshark提取视频数据之RTP包中提取H264和H265

文章目录

  • wireshark提取视频数据之RTP包中提取H264和H265
    • 1 背景
    • 2 提取前工作
    • 3 H264视频从RTP包中提取步骤
    • 4 H265视频从RTP包中提取步骤
    • 5 后记

1 背景

在流媒体相关问题分析时,抓包分析是非常重要的手段,比如播放有码流无图像、流媒体协议对接问题、码流花屏卡顿等问题,很多问题都可以通过抓包然后分析包数据来定位出问题,抓包最常用的工具是wireshark,其能从数据链路层、IP层、传输层、应用层等各层进行分析,支持多种协议,具体用法可百度。本文主要介绍抓包分析的一种场景,怎么通过wireshark从rtp包中把视频的原始数据提取出来,通过对原始视频流的分析可以知道视频流编码是否存在问题是否有丢帧等问题。

2 提取前工作

准备工作如下:

  • 下载wireshark并安装:可百度下载并安装
  • 抓取RTP包:可通过ffmpeg模拟rtsp服务器,通过vlc申请视频,并通过wireshark抓取rtp视频流包,也可关注公众号壹零仓,发送视频流分析的消息,获取已经抓好的数据包(视频流分析->wireshark数据包:h264_rtsp_over_udp.pcapng和h265_rtsp_over_udp.pcapng)
  • 下载wireshark插件:可关注公众号壹零仓,发送视频流分析的消息,获取(视频流分析工具->wiresharkplugins.zip)

本文主要描述如何从rtp打包的H264或者H265中提取H264或H265裸流,rtp传输方式为UDP,后续文章会介绍如何从传输方式为TCP的rtp中提取视频数据。

3 H264视频从RTP包中提取步骤

H264视频流提取步骤如下:

  • 下载并安装wireshark,可下载最新版本,
    下载地址

  • 解压wiresharkplugins.zip压缩包,把压缩包中的两个插件放到wireshark安装目录下的plugins目录下,如果已打开wireshark,需要重启wireshark,路径如下所示:
    插件

  • 使用wireshark打开h264_rtsp_over_udp.pcapng的抓包文件,也可使自己抓的视频流的包文件,打开后选择要提取的视频流rtp包,右键->follow->UDP stream,关闭当前流详情页面,过滤掉其他的无关包,只选取此路视频的包。
    在这里插入图片描述

  • 在包数据上右键->decode as…,在current属性列表中选择rtp,解码成rtp包,最新版应该会自动识别,如果未视频成rtp可通过此步骤解码,此时包的协议类型未rtp,可以看到其payload type为96
    i

  • 选择菜单Edit->Preferences,打开首选项,左侧菜单列表选择Protocols->H.264,这里抓包的视频编码是H.264,fu-a编码的方式,根据上一步骤获取的PT为96,H.264 dynamic payload types 填写96,然后点击OK,这里wireshark应该会把rtp解析成H.264格式,如果以前已经配置了96,但是协议还是没有变成H.264的格式,可通过先配置成其他值,然后再改成96来触发FU-A的解码,这可能是wireshark的一个bug。
    在这里插入图片描述

  • 当Protocol变成H264,Info中FU-A时,即可通过插件进行提取,选择菜单Tools->Video->Export H264弹出导出弹窗,点击Export All,即可导出H264裸流,点击Browse可打开导出文件夹,点击Play 1可直接播放裸流。
    i
    v

  • 裸流导出后,可通过vlc直接播放,看是否正常,也可通过Elecard StreamEye Tools分析编码信息及流信息。

4 H265视频从RTP包中提取步骤

H265视频提取与H264提取类似,用wireshark打开h265_rtsp_over_udp.pcapng,选择rtp的一路视频后通过右键->follow->UDP stream,过滤掉其他包数据,然后通过右键->decode as…解码成RTP,此时获取到rtp的 payload type,这里也是96,之后步骤略有不同,如下:

  • 选择菜单Edit->Preferences,打开首选项,左侧菜单列表选择Protocols->H.265,根据上一步骤获取的PT为96,H.265 dynamic payload types 填写96,然后点击OK,这里wireshark应该会把rtp解析成H265格式,如果以前已经配置了96,但是协议还是没有变成H265的格式,可通过先配置成其他值,然后再改成96来触发FU-A的解码。
    i
  • 选择菜单Tools->Video->Export H265弹出导出弹窗,点击Export All,即可导出H265裸流,点击Browse可打开导出文件夹,点击Play 1可直接播放裸流。
    v
  • 裸流导出后,可通过vlc直接播放,看是否正常,也可通过Elecard-HEVC-Analyzer分析编码信息及流信息

5 后记

后续文章会介绍下如何从rtp流中提取PS流,如何从RTP over TCP中提取H264/H265裸流
相关文章、RTP相关知识、工具及抓包,可注公众号壹零仓,发送视频流分析rtp等消息获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_224183.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构---串(整个部分)

串基本概念:串是由零个或者多个字符组成的有限序列,一半记作Sa1,a2,a3,a4.......(n>0,串的长度) 1.S 串的名字 n 串当中字符串的个数,称为串的长度。 串的常用术语 1.空串(null stri…

七夕,程序员教你5个表白代码,2分钟学会,牢牢主抓她的心

七夕。一个有人欢喜有人愁的节日,虽然对一些单身人士不太友好,但还有不少人都在等这个节日进行表白。毕竟这个日子的成功率会高一些。 情人节少不了送花送礼物,作为一个程序员,当然不会在送什么礼物上给你指点一二,但…

掌控安全学院SOL注入靶场

掌控安全学院SOL注入靶场靶场地址Pass-01 显错注入Pass-02Pass-03Pass-04Pass-05 POST注入Pass-06Pass-07 Head注入Pass-08Pass-09Pass-10 布尔盲注Pass-11Pass-12Pass-13 延时注入Pass-14Pass-15 宽字节注入Pass-16Pass-17总结靶场地址 http://inject2.lab.aqlab.cn Pass-01…

Java实现图书管理系统

作者:~小明学编程 文章专栏:JavaSE基础 格言:目之所及皆为回忆,心之所想皆为过往 今天给大家带来的是用Java实现的图书管理系统。 目录 需求 图书类 创建图书类 创建书架 Operation IOperation接口 添加图书AddOperation…

【考研复试】计算机专业考研复试英语常见问题三(个人选择/学业规划篇)

相关链接: 【考研复试】计算机专业考研复试英语常见问题一(家庭/家乡/学校篇)【考研复试】计算机专业考研复试英语常见问题二(研究方向/前沿技术/本科毕设篇)【考研复试】计算机专业考研复试英语常见问题三&#xff0…

kubernetes集群基于kubeadm部署以及常见问题解决

文章目录集群类型主机规划环境初始化检查操作系统版本关闭防火墙设置主机名主机名解析时间同步关闭 SELinux关闭 swap 分区将桥接的IPv4流量传递到iptables的链开启ipvs安装容器运行时(Docker)卸载Docker旧版本:安装 gcc 相关安装Docker设置阿…

一个Adapter+recycleview实现多种布局,区分布局中

文章目录🍓🍓简述🍓🍓效果图🍓🍓代码🥭🥭AllAdapter.java🥭🥭 FuritAdapter3.java🥭🥭MainActivity.java(主函数)🥭&#…

【全网热点】打造全网最全爱心代码仓库【火速领取爱心】

👨‍💻个人主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 本文章收录于专栏 【代码实践】 目录🌙正文🌏部分效果在线演示🌏部分效果截屏🌸文末祝…

个人设计web前端大作业 基于html5制作美食菜谱网页设计作业代码

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Linux的前世今生

14天学习训练营导师课程: 互联网老辛《 符合学习规律的超详细linux实战快速入门》 努力是为了不平庸~ 学习有些时候是枯燥的,但收获的快乐是加倍的,欢迎记录下你的那些努力时刻(学习知识点/题解/项目实操/遇到的bug/等等&#xf…

2022年深度学习最新研究成果

一、开源深度学习编译器 二、 开源深度学习加速器 三、AITemplate引擎 四、微型机器学习框架 参考文献:https://arxiv.org/pdf/1510.00149.pdf 五、Contrastive Learning 对比学习综述 六、Diffusion Model 扩散模型综述 Diffusion Models: A Comprehensive Surv…

Java面向对象中阶(七)

面向对象中阶 1、包 2、访问修饰符 3、封装 4、继承 5、方法重写(override) 6、多态 7、Object类的常用方法 8、断点调试 1、包 包的本质: 实际上就是创建不同的文件夹来保存类文件 包的三大作用: 区分相同名字的类当类很多时,可以…

【freeRTOS】操作系统之六-低功耗模式

六,低功耗模式 本章节为大家讲解 FreeRTOS 本身支持的低功耗模式 tickless 实现方法,tickless 低功耗机制是当前小型 RTOS 所采用的通用低功耗方法,比如 embOS,RTX 和 uCOS-III(类似方法)都有这种机制。ti…

原来背后都是商业利益,看到网易和暴雪的解约之后,原来是要定以后的KPI,坐地起价,但是一个时代已经结束了,都留在了记忆之中

1,大瓜新闻,2023年1月暴雪游戏中国将不会续约?? 2,原因是主要坐地起价,提高分成设置KPI 还好网易有自研游戏,估计早知道会有现在这样的情况。 提前做好了准备。还记得有个公司叫 九城吗&#x…

创建自己的函数库

创建自己的函数库前言一、什么是STM32标准函数库1.定义:2.作用:3.对比:二、构建库函数1.修改寄存器地址封装2.定义访问的结构体指针和引脚3.创建封装函数3.1创建拉低引脚函数3.2创建引脚初始化函数总结前言 回顾一下,前面点亮led…

堆 (带图详解)

文章目录1.堆的基本概念1. 概念2.性质1.必须为完全二叉树2.满足大堆/小堆成立的条件3.存储方式1.逻辑结构2.物理结构4. 孩子与父亲之间下标的关系2.堆的基本实现1.push——插入1.代码2. 情况分析情况1情况23. 向上调整算法1.过程分析2. 临界条件的判断2. pop—— 删除1.代码2. …

redis哨兵系列1

需要配合源码一起康~ 9.1 哨兵基本概念 官网手册yyds:https://redis.io/docs/manual/sentinel/ redis主从模式,如果主挂了,需要人工将从节点提升为主节点,通知应用修改主节点的地址。不是很友好,so Redis 2.8之后开…

C# async / await 用法

目录 一、简介 二、异步等待返回结果 三、异步方法返回类型 四、await foreach 五、Task.Delay 结束 一、简介 await 运算符暂停对其所属的 async 方法的求值,直到其操作数表示的异步操作完成。 异步操作完成后,await 运算符将返回操作的结果&…

使用STM32CubeMX实现按下按键,电平反转

需提前学习:使用STM32CubeMX实现LED闪烁 目录 原理图分析 按键部分原理图分析 LED部分原理图分析 STM32CubeMX配置 关于STM32CubeMXSYS的Debug忘记配置Serial Wire处理办法 GPIO配置 LED的GPIO配置 KEY1配置 关于PA0后面这个WKUP是什么? 那么啥…

利用ogg微服务版将oracle同步到kafka

ogg微服务版可以再界面上配置抽取、复制进程,不必进入到shell中进行配置,并且图形化界面可以看到更多信息。 系统架构 源端安装ogg for oracle 19C , 目标端安装ogg for bigdata 21C kafka 2.2 数据库:19C 所有软件安装在同台服务器上&#…