使用wireshark解析RTP包中的音频流

使用wireshark解析RTP包中的音频流

当使用RTP协议传输音频,但是具体的载荷类型payload type是自定义的payload时可以使用以下方法进行解析;

 

使用wireshark对RTP报文进行解析

拿到抓包文件后使用wireshark打开

并使用合适的过滤条件进行过滤

然后选中其中一个数据包,右键选择[解码…(Decode As…)]

 

选择RTP并点击OK

 

此时wireshark界面可以看到已经将对应的报文作为RTP协议解析;

然后选择【电话】-【RTP】-【RTP流】即[Telephony] – [RTP] – [RTP Streams];

 

 

然后选中需要分析的流并点击【分析】(Analyze)

 

由于payload使用自定义的格式(比如本例为PCM 16bit 小端 单通道 8000采样的原始格式);因此直接点击【Play Streams】播放会是噪音,需要将原始payload保存为单个文件后再做处理;

 

需要我们保存成raw格式文件,点击【Save】,选择File Synchronized Forwar Stream Audio;即文件同步正向音频流;

注意在save对话页面,

选择 raw注意一定要选raw格式,否则保存不了正常的payload影响后面的解析

然后再save;

 

转换音频流源码为wav格式

使用Audacity进行音频文件编辑与转换

打开audacity

导入刚刚保存的audio文件

【File】-- 【Import】 -- 【Raw Data…】选择刚保存的文件

然后再弹窗中设置编码方式

然后点击【Import】

 

可以单击播放按钮来进行试听

也可以导出音频文件,在播放器中播放;

这里选在导出为wav文件;

【File】-- 【Export】 -- 【Export As Wav…】

确认名字和保存路径无误后点击【Save】即可;

然后编辑MetaData页面可以直接ok即可,也可以自行编辑;

 

使用FFmpeg进行格式转换

也可以使用FFmpeg命令进行转换,前提是系统需要提前安装FFmpeg工具,网上有些方法比较复杂而且不一定能成功,这里推荐一个便捷方式,即安装smplayer,会顺带把FFmpeg作为依赖而自动安装上去,只需执行 sudo apt install smplayer命令即可;

FFmpeg转换命令

# ffmpeg -ar 8000 -ac 1 -acodec pcm_s16le -f s16le -i Saved-RTP-Audio.au Rtp-ffmpeg-formatted.wav

 

使用音频播放器播放验证

选择音乐播放器播放刚保存的wav文件,比如rhythmbox;可以听到正常的声音;

 

猜你喜欢

转载自blog.csdn.net/halazi100/article/details/106550470