用于 .wav 文件编码的 C/C++ 库

Posted

技术标签:

【中文标题】用于 .wav 文件编码的 C/C++ 库【英文标题】:C/C++ library for .wav file encoding 【发布时间】:2009-11-30 13:22:11 【问题描述】:

我需要一个 MS VC6 库,它将浮点数组形式的采样数据编码为音频文件格式,最好是 wav 还有一个库可以将样本编码为pcm格式并直接通过声卡播放而不需要先保存wav文件?

【问题讨论】:

重复:***.com/questions/1451606/… 【参考方案1】:

看起来 libsndfile (www.mega-nerd.com/libsndfile/) 和 SndLib (ccrma.stanford.edu/software/snd/sndlib/) 可以满足您的需求。

【讨论】:

【参考方案2】:

如前所述,WAV 文件格式非常简单。要播放样本,请使用 waveOut 函数;他们被记录在案。

要将浮点数转换为有符号的 16 位 PCM 样本,只需将样本转换为 16 位范围。例如,假设 -1.0 到 +1.0 范围内的样本乘以 32767.0 并转换为整数:

int16_t sample = static_cast<int16_t>(32767.0 * float_sample);

一旦你有了这些,只需使用 waveOut* 函数来播放样本。

【讨论】:

以上是关于用于 .wav 文件编码的 C/C++ 库的主要内容,如果未能解决你的问题,请参考以下文章

使用哪个编辑器?用于编码 c/c++ [关闭]

wav格式编码dsd转换pcm编码

读取 u-LAW 编码的 WAV 文件并不压缩保存

使用 javascript 播放以 base64 编码的 .wav 声音文件

gstreamer 将多通道 wav 文件拆分为单独的通道并将每个通道编码为 mp3、alac 等并保存到文件

HRESULT:尝试使用 NAudio 库播放 mp2 编码的 wav 文件时出现 0xC00D5212