最近线上 PK 偶然出现双方主播互相听不见声音的情况,在日志不能明确体现问题时,就需要抓下主播本地的音频和远端的音频来确定数据是在哪消失的
所以我们用到一个比较简单的流写出的标准库类:std::ofstream
通过 std::ofstream 类,可以创建一个用于写入文件的输出流对象,可以将数据写入到文件中
下面是一个简单的例子:
#include <fstream> // 音频回调,也可以在发送音频数据时写入 void OnAudioData(void* data, int size, int channels, int bit_per_sample){ send_audio_date.write((char*)data, size); } void Stop(){ send_audio_data_.close(); } main(){ ... std::ofstream send_audio_data_ = std::ofstream("send_audio", std::ios::out | std::ios::binary); // 音频数据采集的过程,此处省略
// 48000hz, 16bit, 2channels ... // 停止发送数据 Stop(); }
本地会生成一个无格式的 send_audio 文件,如何查看音频是否符合预期呢
我们要借助一个音频软件:GoldWave
加载本地文件后,界面如下:
要注意的是,要输入正确的音频速率和位数等参数
这是我例子中音频的参数,供大家参考
点击左上角的播放按钮即可播放音频数据,一般情况,有数据的话,是有波形的
而波形也分两种,初中物理也学过,噪音是杂乱无章的,而人声或者音乐是有规律的,简单分辨后,即可找出问题
标签:std,audio,音频,send,ofstream,data From: https://www.cnblogs.com/strive-sun/p/17571850.html