使用libsndfile库读取C++中的WAV文件
Using the libsndfile library to read a WAV file in C++
我正在C++中使用libsndfile读取WAV文件。有两点我不明白:
- 如何获得WAV文件的"每个样本位数"值?我在网站上阅读了文档http://www.mega-nerd.com/libsndfile/api.html,但我在SF_INFO结构中找不到"Bits per sample"的成员
- 使用WAV文件,我如何创建数据来绘制矢量,用于描述由库sndfile.h中的函数
sf_readf_float()
读取的声音数据?有什么方法可以做到这一点吗
格式字段将为您提供BPS。例如:SF_FORMAT_PMC_16。
无论输入声音的bps如何,sf_readf_float都会将样本转换为-1.0到1.0的范围。你只需要注意音频频道。如果音频有2个通道,并且您读取4个浮动,则您将具有:
sample-1 of left channel
sample-1 of right channel
sample-2 of left channel
sample-2 of right channel
然后,要绘制点,必须将[-1.0;1.0]转换为视口高度。例如,如果视口在Y=20,高度为300px,则公式为:
PY = (int)(20.0 + (sample_value / 2.0 + 0.5) * 300.0);
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++中的"inline"关键字
- 通过C(或C )中的WAV文件循环
- 在mbed中打开的wav文件数量是否有限制
- ifstream(c ++)的替代方案,同时尝试在Android中读取.wav文件
- 我如何在Linux上的C 中播放.wav文件
- 在哪里使用c++和qt将Wav标头添加到实时音频服务器中的数据
- 如何从wav文件中获取时域中的频率
- 使用libsndfile库读取C++中的WAV文件
- 在c++中读取.wav数据时的意外输出
- c++:播放同一文件夹中的.wav文件