Wireshark在多媒体开发中的使用
一 概要:
Wireshark(前称Ethereal)是一个网络抓包工具。 是一款非常棒的Unix和Windows上的开源 网络协议分析器。尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。在多媒体开发中,经常会用到wireshark进行辅助定位,定位的内容一般有码流正确性确认、码流回放、网络情况分析、帧率码率确认等。
官网下载地址:https://www.wireshark.org/
二 使用步骤:
Wireshark有桌面版和命令行两种,通常在安卓、嵌入式等平台使用命令行方式进行抓包,然后在PC环境下进行包的分析
2.1 桌面版
a 开始界面
b 选择网卡
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。
c 窗口介绍
d 填写过滤条件
协议过滤
比如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.dst192.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.srcxx.xx.xx.xx 表示反过滤IP为xx.xx.xx.xx的数据包
e 结果展示
2.2 命令行
相对于桌面版本。命令行使用起来更为简单
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
抓到包之后一般会先根据ip或者端口过滤出要分析的数据流,
然后将过滤出来的udp转换成RTP
注意:Wirshark是基于用户指定的格式去做翻译的,所以我们指定将udp转换成RTP时,前提是我们知道这个包确实是RTP码流,否则wireshark将翻译出很奇怪的包,该原则同样适用于将RTP转成h264或其他格式。
Decode as转码成h264,有时Wireshark会误将其他格式的RTP转成h264,但事实上并不是h264的码流,正如前边所说,Wireshark需要用户告诉他需要解成什么协议。如果出现解错的情况,可以通过payload的配置进行纠正。如下:
编辑--首选项--protocols---找到要纠正的协议,填上正确的payload值。
四 示例
4.1 Ts流
udp--->decode as---->MP2T
将udp流解析成TS流格式,然后可以将tS流中的音视频导出用播放器播放。
如下图:电话-->rtp-->流分析-->save-->File synchronized Forward Stream Audio
, 此时需要注意,需要把后缀名改成.raw,然后保存后再将后缀名改成.ts。
4.2 流量分析
首先设置过滤条件,将要分析的码流过滤出来,然后将过滤出来的结果保存--导出特定分组,(否则分析的结果会不准),然后打开新的过滤过的流,点击统计--I/O图标,会分析出流量曲线,用户可以调整统计的时间粒度,已达到自己想要统计的目的。
4.3 视频帧率统计
Wireshark没有提供直接的帧率统计功能,但是可以通过过滤rtp.marker == 1(依据rtp标准)来将一帧的最后一个包作为过滤条件,也就是一帧的结束,过滤后需要码流保存导出特定分组,然后打开新的文件,就可以根据时间值看出一秒钟有多少帧了。
4.4 丢包,乱序分析
电话—>rtp-流分析
然后可以可以根据序列的一列来确认是否有乱序和丢包。
Wireshark在多媒体开发中的使用的更多相关文章
- 【Android】开发中个人遇到和使用过的值得分享的资源合集
Android-Classical-OpenSource Android开发中 个人遇到和使用过的值得分享的资源合集 Trinea的OpenProject 强烈推荐的Android 开源项目分类汇总, ...
- 深入理解iOS开发中的BitCode功能
前言 做iOS开发的朋友们都知道,目前最新的Xcode7,新建项目默认就打开了bitcode设置.而且大部分开发者都被这个突如其来的bitcode功能给坑过导致项目编译失败,而这些因为bitcode而 ...
- (转) 浅析HTML5在移动应用开发中的使用
(转)浅析HTML5在移动应用开发中的使用 (原)http://www.iteye.com/magazines/67 2012-03-07 来自 UECD.163.com 编辑 wangguo ...
- 网站开发中很实用的 HTML5 & jQuery 插件
这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...
- Windows开发中一些常用的辅助工具
经常有人问如何快速的定位和解决问题,很多时候答案就是借助工具, 记录个人Windows开发中个人常用的一些辅助工具. (1) Spy++ 相信windows开发中应该没人不知道这个工具, 我们常用 ...
- iOS开发中的Html解析方法
iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...
- Android多媒体开发-stagefright及AwesomePlayer相关知识梳理
android的多媒体框架中, stagefright其实是AwesomePlayer的代理,就是个皮包公司. status_t StagefrightPlayer::setDataSource( c ...
- 非常不错的android应用开发详解在安卓开发中
我们在苹果开发中,总会看到XCode,Interface Builder,Object-c这如此入耳入随的单词,但往往多数人在认为XCODE看着简单,InterfaceBuilder好似操作, 而Ob ...
- 多媒体开发库 之 SDL 详解
SDL 简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的 ...
- Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent. ...
随机推荐
- HarmonyOS 开发入门(一)
HarmonyOS 开发入门(一) 日常逼逼叨 因为本人之前做过一些Android相关的程序开发,对移动端的开发兴趣比较浓厚,近期也了解到了一些关于华为HarmonyOS 4.0 的事件热点,结合黑马 ...
- ASP.NET Core分布式项目实战(Identity Server 4回顾,Consent 实现思路介绍)--学习笔记
任务17:Identity Server 4回顾 上一节我们中间留了一部分,登录之后的 RequireConsent,就是用户授权这一步没有做,直接跳过,这种情况可以理解为我们自己比较信任的客户端,这 ...
- TPCH-PostgreSQL生成数据集并导入数据表
1.数据集下载 TPC-H数据集: https://github.com/gregrahn/tpch-kit 2.解压安装 unzip tpch-kit-master.zip cd tpch-kit ...
- ubuntu之jupyter notebook配置
ubuntu之jupyter notebook配置 安装jupyter: 前提:安装pip pip install jupyter jupyter notebook 配置: 生成配置文件: jupyt ...
- .NET应用程序7种最常见的性能问题及其解决方案
译者注:这篇文章依然是介绍.NET Framework框架下的性能问题排查,可能并不直接适用于.NET Core,但有时也能提供一些参考. .NET应用程序7种最常见的性能问题及其解决方案 原文地 ...
- 山东职业竞赛wp2023(arm、cpython)
pwn2 return2libc,白给 from evilblade import * context(os='linux', arch='amd64') context(os='linux', ar ...
- JS 可选链操作符?. 空值合并运算符?? 详解,更精简的安全取值与默认值设置小技巧
壹 ❀ 引 说来也比较惭愧,可选链操作符?.在公司项目中使用特别频繁,而我在之前一直以为是类似奇技淫巧的写法,所以也没去查阅相关文档,直到在学习typescript时碰巧看到了可选链操作符与空值合并操 ...
- NC25084 [USACO 2006 Nov S]Bad Hair Day
题目 题目描述 Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is s ...
- 【leetcode】合并 k 个有序链表,我给了面试官这 5 种解法
开胃菜 在进入本节的正题之前,我们先来看一道开胃菜. 题目 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...
- 【Unity3D】选中物体消融特效
1 消融特效原理 消融特效 中基于 Shader Graph 实现了消融特效,本文将基于 Shader 实现消融特效. 当前实现消融特效的方法主要有 Alpha 测试消融.clip(或 dis ...