播放pcap抓包文件中的amr-wb、amr-nb、evs声音

前言

        由于wireshark并不能解析amr-wb、evs数据,所以也就没办法播放响应的音频。在遇到问题时,想还原抓包的数据是否正常就很难受。为了解决这个问题,我看了RFC4867,想着自己写一个解包小工具,最后彻底放弃。。感觉太复杂了。还好,一向面向github编程的我在上面找到了以为大佬写的转换工具。本文章的操作亲自验证可用。


软件介绍

这是一个python写的脚本,github地址为 AMR-WB_extractor
这个不光可以转换amrwb的格式,而且还可以转换amrnb的格式,很吊!
下面讲一下如何使用这个脚本


使用过程

首先需要安装两个库,现在软件采用python3,需要安装pip3

apt-get install python3-pip

pip3  install --index https://pypi.mirrors.ustc.edu.cn/simple/  bitarray
pip3  install --index https://pypi.mirrors.ustc.edu.cn/simple/  scapy

然后开始git clone

git clone https://github.com/Spinlogic/AMR-WB_extractor.git
cd AMR-WB_extractor
git clone https://github.com/wanglihe/3gpp-evs.git

直接运行

#amr-wb/amr codec
python3 .\pcap_parser.py -i .\amrwb_rtp.pcap -o out.amrwb -c amr-wb

#evs codec
python3 .\pcap_parser.py -i .\evs_rtp.pcap -o out.evs -c evs





#命令参数
python3 .\pcap_parser.py
-i:输入文件位置(这个是需要过滤后的pcap文件,这个pcap文件只能包含所有的amr-wb rtp数据包,不能有别的数据,这个地方可以通过过滤特定ssrc后使用wireshark导出特定分组获得)
-o:输出的文件路径和名字
-c:指定的编码格式,此处可以不指定。脚本就会自动获取,也可以指定amr 或者 amr-wb evs

 播放

AMR:  amr的转换包可以用mpv和ffplay都可以愉快的播放

 ffplay.exe .\out.amrwb

AMR的声音就可以听到了

EVS:  evs转换的包无法直接播放需要用EVS_dec转换为raw数据后,使用audacity进行导入raw数据播放,配置如下:


Encoding: Signed 16-bit PCM
Byte order: Little endian
Channels: 1 Channel (Mono)
Start offset: 0 bytes
Sampling rate: 48000

播放pcap抓包文件中的amr-wb、amr-nb、evs声音_第1张图片

   EVS的声音就可以听到了

 如果找不到相关的连接,可以访问GitHub - manlong2004/AMR-WB_EVS_extractor: 3GPP amr evs pcap package extractor

你可能感兴趣的:(python,amr,evs,extractor)