用c或c++播放wav文件,怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c或c++播放wav文件,怎么实现相关的知识,希望对你有一定的参考价值。

参考技术A 播放库类 一搜一大把,个人比较喜欢ffmpeg。也可以用windows系统api如mcisendCommand

在 C++ 中连接 .wav 文件

【中文标题】在 C++ 中连接 .wav 文件【英文标题】:Concatenate .wav files in C++ 【发布时间】:2016-03-07 01:23:18 【问题描述】:

我怎样才能使用函数、库以及任何我需要的东西来连接两个 .wav 文件?输入应该是绝对路径,而输出应该是在某处创建并放置(不仅仅是播放)的音频文件,在哪里并不重要。

我正在用 XCode 6 编写一个 Mac 命令行应用程序。

【问题讨论】:

通过fopen()打开文件,通过getc()fread()读取文件,然后计算新的头值和数据,然后通过putc()fwrite()输出。另外不要忘记通过fclose()关闭文件。 我不知道这些是什么,我会阅读它们并尝试一下。 【参考方案1】:

.wav 文件格式是一种非常简单的格式,由定义音频文件属性的固定标头组成;即字节序、通道数和采样率。它的文档在 intertubes 上得到了广泛的定义。

我不记得是否有任何通用库提供了一种方便的方法来做到这一点(值得通过libsndfile's API documentation 寻找适合该法案的东西)。

在任何情况下,读取两个 WAV 文件的标题、检查它们的格式,然后创建输出文件应该不会太难。如果两个 WAV 文件具有相同的字节序、通道数和采样率,则该过程很简单,否则您必须至少重新采样/重新混合其中一个文件。

【讨论】:

我可以用什么来做到这一点?会是 MikeCAT 所说的吗? 是的,除了这是 C++,所以它是 std::ifstream 和 std::ofstream。【参考方案2】:

有一个非常简单、轻量级和成熟的开源C API 库for reading-writing several common audio file formats。我已经有一段时间没有使用它了,如果我没记错的话,它具有打开声音文件进行写入、寻找结尾、从另一个文件附加数据和更新标题的例程。我希望这会有所帮助。

【讨论】:

以上是关于用c或c++播放wav文件,怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

怎么用c语言播放特定目录里的wav文件?

C ++将wav文件放入dll

html如何播放wav文件?

如何在 Linux 上用 C++ 播放 .wav 文件?

在 C/C++ 中在树莓派中播放 WAV,必须使用 dsp?

如何使用 C 或 C++ 将 .caf 文件转换为 .wav?