一 概要:

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在多媒体开发中的使用的更多相关文章

  1. 【Android】开发中个人遇到和使用过的值得分享的资源合集

    Android-Classical-OpenSource Android开发中 个人遇到和使用过的值得分享的资源合集 Trinea的OpenProject 强烈推荐的Android 开源项目分类汇总, ...

  2. 深入理解iOS开发中的BitCode功能

    前言 做iOS开发的朋友们都知道,目前最新的Xcode7,新建项目默认就打开了bitcode设置.而且大部分开发者都被这个突如其来的bitcode功能给坑过导致项目编译失败,而这些因为bitcode而 ...

  3. (转) 浅析HTML5在移动应用开发中的使用

    (转)浅析HTML5在移动应用开发中的使用 (原)http://www.iteye.com/magazines/67   2012-03-07  来自 UECD.163.com  编辑 wangguo ...

  4. 网站开发中很实用的 HTML5 & jQuery 插件

    这篇文章挑选了15款在网站开发中很实用的 HTML5 & jQuery 插件,如果你正在寻找能优化网站,使其更具创造力和视觉冲击,那么本文正是你需要的.这些优秀的 jQuery 插件能为你的网 ...

  5. Windows开发中一些常用的辅助工具

    经常有人问如何快速的定位和解决问题,很多时候答案就是借助工具, 记录个人Windows开发中个人常用的一些辅助工具.   (1) Spy++ 相信windows开发中应该没人不知道这个工具, 我们常用 ...

  6. iOS开发中的Html解析方法

    iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...

  7. Android多媒体开发-stagefright及AwesomePlayer相关知识梳理

    android的多媒体框架中, stagefright其实是AwesomePlayer的代理,就是个皮包公司. status_t StagefrightPlayer::setDataSource( c ...

  8. 非常不错的android应用开发详解在安卓开发中

    我们在苹果开发中,总会看到XCode,Interface Builder,Object-c这如此入耳入随的单词,但往往多数人在认为XCODE看着简单,InterfaceBuilder好似操作, 而Ob ...

  9. 多媒体开发库 之 SDL 详解

    SDL 简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的 ...

  10. Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent. ...

随机推荐

  1. MarkDown文件插入图片(绝对\相对路径\调整图像大小位置)

    1. 插入网络图片(有效网络连接) Markdown中插入图片的语法为,图片路径可以直接写入图片有效链接网址即可: 方法1:![图片说明](图片有效链接网址) 方法2:<img src=&quo ...

  2. Java开发学习(四十七)----MyBatisPlus删除语句之多记录操作

    1.多记录操作 先来看下问题: 之前添加了很多商品到购物车,过了几天发现这些东西又不想要了,该怎么办呢? 很简单删除掉,但是一个个删除的话还是比较慢和费事的,所以一般会给用户一个批量操作,也就是前面有 ...

  3. MySQL-顺序IO和随机IO的区别

    顺序IO是指读写操作的访问地址连续.在顺序IO访问中,HDD所需的磁道搜索时间显着减少,因为读/写磁头可以以最⼩的移动访问下一个块.数据备份和日志记录等业务是顺序IO业务.随机IO是指读写操作时间连续 ...

  4. ABC 326

    E 题意: 给定一个 \(n\) 面骰,长度 \(n\) 的数组 \(a\) 和一个初始为 \(0\) 的变量 \(x\). 每次投掷骰子,等概率获得 \(1 \sim n\) 中的一个数 \(p\) ...

  5. nginx 配置mp4文件播放

    nginx 配置mp4文件播放 ​ 由于工作需要一个离线的视频播放地址,就想简单一点直接把视频文件放到nginx里面实现视频播放,但是把mp4文件放上去之后地址栏输入地址直接就是下载文件,这跟我想象的 ...

  6. 看似简单的input框输入竟然异常卡顿,记一个日常性能问题的排查思路

    壹 ❀ 引 我们公司产品主要提供企业项目管理服务,那么自然有配套的desk工单管理系统,用于搜集客户bug以及相关问题反馈.有一天我在测试功能时碰巧发现了一个bug,所以就想着提一个工单记录下方便日后 ...

  7. JS leetcode 宝石与石头 题解分析,正则字符组也有妙用

    壹 ❀ 引 简单问题简单做,今天的题目来自leetcode771. 宝石与石头,字符串相关的一道题,题目描述如下: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代 ...

  8. NC19777 卡牌游戏

    题目链接 题目 题目描述 小贝喜欢玩卡牌游戏.某个游戏体系中共有N种卡牌,其中M种是稀有的.小贝每次和电脑对决获胜之后都会有一个抽卡机会,这时系统会随机从N种卡中选择一张给小贝.普通卡可能多次出现,而 ...

  9. Java图片加水印

    采用Java自带的Image IO 废话不多说,上菜 1.  文字水印 1 import sun.font.FontDesignMetrics; 2 3 import javax.imageio.Im ...

  10. Linux下csv转Excel xlsx文件保持身份证号后三位不被省略

    在Win下, 可以用Excel 或 WPS Spreadsheet里面的Data->Import, 将csv内容正确导入. 但是在Linux下, WPS的Spreadsheet不提供Data-& ...