首页 > 其他分享 >Wireshark在多媒体开发中的使用

Wireshark在多媒体开发中的使用

时间:2024-03-15 19:33:08浏览次数:27  
标签:udp 多媒体 过滤 网卡 xx 开发 80 Wireshark

一 概要:

Wireshark(前称Ethereal)是一个网络抓包工具。 是一款非常棒的Unix和Windows上的开源 网络协议分析器。尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。在多媒体开发中,经常会用到wireshark进行辅助定位,定位的内容一般有码流正确性确认、码流回放、网络情况分析、帧率码率确认等。
官网下载地址:https://www.wireshark.org/

二 使用步骤:

Wireshark有桌面版和命令行两种,通常在安卓、嵌入式等平台使用命令行方式进行抓包,然后在PC环境下进行包的分析

2.1 桌面版

a 开始界面

image

b 选择网卡

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
image

c 窗口介绍

image

d 填写过滤条件

image

协议过滤

比如TCP,只显示TCP协议。
rtsp,只显示rtsp协议。
udp,只显示udp协议。
rtp,只显示rtp协议。
rtmpt,只显示rtmp协议。
常用的还有sip、h225、h245等

IP过滤

比如 ip.src 192.168.1.102 显示源地址为192.168.1.102,
ip.dst
192.168.1.102, 目标地址为192.168.1.102
ip.addr=192.168.1.102 表示部分源和目标,所有通过192.168.1.102的包都过滤

端口过滤

tcp.port ==80,  tcp端口为80的
tcp.srcport == 80,  只显示TCP协议的源端口为80的。
tcp.dstport == 80,  只显示TCP协议的目的端口为80的。
udp.port ==80,  UDP端口为80的
udp.srcport == 80,  只显示UDP协议的源端口为80的。
udp.dstport == 80, 只显示UDP协议的目的端口为80的。

逻辑运算符为 AND / OR / && / || / !

例如ip.srcxx.xx.xx.xx && udp.port=xxxxx
! ip.src
xx.xx.xx.xx 表示反过滤IP为xx.xx.xx.xx的数据包

e 结果展示

image

2.2 命令行

相对于桌面版本。命令行使用起来更为简单

image

a 选择网卡

可以先用ifconfig\ipconfig命令查询网卡xxx ,然后tcpdump –i xxx ,这样会将抓包结果实时刷新到抓包界面,如果想将抓包文件保存可以使用-w参数tcpdump –i xxx –w /sdcard/xxx.pcap

b 填写过滤条件

tcpdump ip host xx.xx.xx.xx and ! yy.yy.yy.yy 过滤指定的ip
tcpdump src port xx过滤指定的源端口

三 Wireshark媒体码流解析:

基于标准rtp的码流,底层传输协议为udp
image
抓到包之后一般会先根据ip或者端口过滤出要分析的数据流,
image

然后将过滤出来的udp转换成RTP

注意:Wirshark是基于用户指定的格式去做翻译的,所以我们指定将udp转换成RTP时,前提是我们知道这个包确实是RTP码流,否则wireshark将翻译出很奇怪的包,该原则同样适用于将RTP转成h264或其他格式。
image

Decode as转码成h264,有时Wireshark会误将其他格式的RTP转成h264,但事实上并不是h264的码流,正如前边所说,Wireshark需要用户告诉他需要解成什么协议。如果出现解错的情况,可以通过payload的配置进行纠正。如下:
编辑--首选项--protocols---找到要纠正的协议,填上正确的payload值。
image

四 示例

4.1 Ts流

udp--->decode as---->MP2T将udp流解析成TS流格式,然后可以将tS流中的音视频导出用播放器播放。

如下图:电话-->rtp-->流分析-->save-->File synchronized Forward Stream Audio, 此时需要注意,需要把后缀名改成.raw,然后保存后再将后缀名改成.ts。
image

4.2 流量分析

首先设置过滤条件,将要分析的码流过滤出来,然后将过滤出来的结果保存--导出特定分组,(否则分析的结果会不准),然后打开新的过滤过的流,点击统计--I/O图标,会分析出流量曲线,用户可以调整统计的时间粒度,已达到自己想要统计的目的。

image
image

4.3 视频帧率统计

Wireshark没有提供直接的帧率统计功能,但是可以通过过滤rtp.marker == 1(依据rtp标准)来将一帧的最后一个包作为过滤条件,也就是一帧的结束,过滤后需要码流保存导出特定分组,然后打开新的文件,就可以根据时间值看出一秒钟有多少帧了。

4.4 丢包,乱序分析

电话—>rtp-流分析
然后可以可以根据序列的一列来确认是否有乱序和丢包。
image

标签:udp,多媒体,过滤,网卡,xx,开发,80,Wireshark
From: https://www.cnblogs.com/zuojie/p/17968892

相关文章

  • 【Django开发】前后端分离美多商城项目第2篇:项目准备【附代码文档】
    美多商城项目4.0文档完整教程(附代码资料)主要内容讲述:美多商城,项目准备,商业模式介绍,开发流程,需求分析,项目架构,创建工程,1.在git平台创建工程1.B2B--企业对企业,2.C2C--个人对个人,3.B2C--企业对个人,4.C2B--个人对企业,5.O2O--线上到线下,6.F2C--工厂到个人,7.B2B2C--企业--企业--......
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:RelativeContainer)
    相对布局组件,用于复杂场景中元素对齐的布局。说明:该组件从APIVersion9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。规则说明容器内子组件区分水平方向,垂直方向:水平方向为left,middle,right,对应容器的HorizontalAlign.Start,HorizontalAl......
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)
    可以进行页面下拉操作并显示刷新动效的容器组件。说明:该组件从APIVersion8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。子组件支持单个子组件。从APIversion11开始,Refresh子组件会跟随手势下拉而下移。接口Refresh(value:RefreshOptio......
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Panel)
    可滑动面板,提供一种轻量的内容展示窗口,方便在不同尺寸中切换。说明:该组件从APIVersion7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。子组件可以包含子组件。说明:子组件类型:系统组件和自定义组件,支持渲染控制类型(if/else、ForEach和LazyFo......
  • 鸿蒙开发-第七天
    布局进阶列表List =>容器组件通用属性颜色渐变,阴影,多态,动画animation,图形变换(平移,缩放,旋转)------------------------List------------------------List的主轴默认是垂直方向的内容超过屏幕大小时,提供滚动功能list组价中可以水平或者垂直滚动List(){   listItem(......
  • SpaceX 星舰发射「成功一半」;首位具身 AI 机器人面世丨 RTE 开发者日报 Vol.166
       开发者朋友们大家好: 这里是**「RTE开发者日报」**,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代......
  • Python之Web开发中级教程----创建Django子应用
    Python之Web开发中级教程----创建Django子应用基于上一个教程的Django项目(可以先看上一集,链接如下:)https://mp.csdn.net/mp_blog/creation/editor/1367248972.创建子应用pythonmanager.pystartappbookadmin.py:跟网站的后台管理站点配置相关。apps.py:用于配置当前应用......
  • 一款前端开发工具Hbuilder
    背景:最近日在接触前同事留下的一个VUE项目(只有前端代码,后台服务压根没写真不知道以前是怎么糊弄过去的)时,发现一款可以快速开发前端的软件;今日分享一下。当我打开项目时发现,有个app.vue文件, 首先想到的应该是个VUE项目;根据以前的开发经验,我果断的安装了node.js,vscode等软......
  • idea开发java必备插件
    1.Lombok 这个大家都熟悉,通过注解的形式代替了很多生成式的代码,如Getter、Setter方法、ToString方法,构造函数等,使你的类更精简和美观,没有太多的冗余代码。2.Maven Helper,使用maven引入依赖的必备,分析和排除冲突依赖关系的简单方法,显示maven依赖树,查询引用的依赖关系以及跳转......
  • 全栈开发与自动化测试高薪私教班,带你从0到1拿到高薪Offer
    随着ChatGPT的火爆以及人工智能的崛起,在互联网工作的我们仿佛都感受到了职业危机。同时,我们也应该看到,人工智能技术的发展也带来了新的机遇,只要利用好人工智能,便会大大提升我们的工作效率。比如说,我们可以利用人工智能帮我们排查代码中的错误、帮我们自动生成PPT、帮我们自动生成......