您当前的位置: 首页 >  c++

龚建波

暂无认证

  • 6浏览

    0关注

    313博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

libsndfile库的文件与内存读写操作(C++ Qt)

龚建波 发布时间:2019-08-16 17:13:36 ,浏览量:6

0.前言

本文内容接上一篇安装:https://blog.csdn.net/gongjianbo1992/article/details/98995983

这个库用起来还算简单。由于专利原因该库还不支持MP3格式(文档显示目前仅支持wav、aiff、au),之后我准备换ffmpeg来处理我的数据。由于我的音频知识匮乏,所以本文只贴了一些操作的代码段,作为学习记录。

使用方式可以参考clone下来的代码目录examples和programs:https://github.com/erikd/libsndfile.git

此外,作者还提供了文档,路径为/libsndfile/doc/api.html。

(2019-8-26)修正:之前我read时第二个参数超过了缓冲区大小,导致异常,本以为是库的问题,还好库作者纠正了我代码里的错误。如果各位发现我代码还有错误,请指正,谢谢。

1.音频文件读写

如果使用C++的话,可以用作者封装的SndfileHandle类(sndfile.hh头文件)来完成大部分操作。

对于音频数据,可以从该网站获取:https://samples.mplayerhq.hu/A-codecs/libsndfile-samples/

下面是一个简单的读取音频文件代码(使用前先配置好include和lib),功能为获取音频信息即读取所有PCM帧(别的格式如GSM610也会先解析成PCM):

#include 
#include "sndfile.hh"
using namespace std;

int main()
{
	SndfileHandle snd(R"(C:\Users\zhaozhao\Desktop\test\wav-pcm16.wav)");

	//【1】获取文件信息
	cout             
关注
打赏
1655829268
查看更多评论
0.1271s