作者:虚坏叔叔
早餐店不会开到晚上,想吃的人早就来了!😄
一、二进制读取pcm文件流,写入到播放设备
TestQAudioOutput项目下载地址
链接:https://pan.baidu.com/s/1b6RW2A-CeBeMZgfLX5gfXw
提取码:o5sd
打开并且生成生成项目TestQAudioOutput
可以看到最后生成到这里:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wG7f6xYI-1651146585913)(博客使用模板.assets/image-20220428193311404.png)] C++ QT结合FFmpeg实战开发视频播放器-19读取PCM音频文件进行播放1_python](https://file.cfanz.cn/uploads/png/2022/08/15/2/E37Y7456bd.png)
需要将out.pcm文件拷贝到这里,便于二进制读取这个pcm文件:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nkNObtBT-1651146585914)(博客使用模板.assets/image-20220428194437189.png)] C++ QT结合FFmpeg实战开发视频播放器-19读取PCM音频文件进行播放1_c++_02](https://file.cfanz.cn/uploads/png/2022/08/15/2/5580fG8J0M.png)
需要包含这些头文件:
#include <QAudioFormat>
#include <fstream>
#include <QAudioOutput>
修改工作目录:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNRJNkPy-1651146585915)(博客使用模板.assets/image-20220428194301047.png)] C++ QT结合FFmpeg实战开发视频播放器-19读取PCM音频文件进行播放1_量化交易_03](https://file.cfanz.cn/uploads/png/2022/08/15/2/6565DOH6BW.png)
// TODO: 生成PCM文件,然后使用二进制读文件的方式,读出流写入播放设备中进行播放声音
QAudioOutput* out = new QAudioOutput(fmt);
QIODevice* io = out->start(); // 操作声音设备
int size = out->periodSize();//一个播放周期的大小
//out->bytesFree
char* tmp = new char[size]; // 文件缓冲区
string src = "out.pcm";
ifstream in(src.c_str(), ios::in | ios::binary);
if (!in) // 开发是否成功
{
return -1;
}
调制可以看到读取成功了:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1VVYfIZs-1651146585915)(博客使用模板.assets/image-20220428194642485.png)] C++ QT结合FFmpeg实战开发视频播放器-19读取PCM音频文件进行播放1_量化交易_04](https://file.cfanz.cn/uploads/png/2022/08/15/2/0be031AQ2E.png)
二、总结
- 本文完成了pcm文件的读取 。










