组合现有的音频文件并从中生成新的音频文件

本文关键字:音频 文件 组合 | 更新日期: 2023-09-27 18:09:46

我有2个示例波文件。

我想把它们组合成一个输出波,像这样:

播放第一个wav,等待x秒播放第二个wav,并将结果保存为新的wav文件

我不是特别喜欢wav格式,所以如果有必要的话,我很乐意使用另一种格式。

从我的研究来看,我需要将波转换为PCM,然后创建一个新的输出缓冲区,并将第一个文件写入输出缓冲区。然后以某种方式为x秒创建一个空间,然后将第二个PCM写入

我该怎么做呢?

组合现有的音频文件并从中生成新的音频文件

首先你需要明白你在说什么

WAV是RIFF的一种,它将声波编码为PCM。

本质上,PCM意味着波的离散值以一定的采样率(通常为44 kHz)存储

每个样本可能包含一个或多个通道的信息(通常为2)

每个样本的值存储为固定大小的整数或浮点数。(通常为16位整数)

这些属性存储在WAV标头

要结合两个单独的WAV文件,你需要读取两个文件的头,如果你是幸运的,他们将有相同的字节率(== samplerate *通道计数* bits/sample/8),那么你只需要连接第二个文件减去头到第一个文件的末尾,并将第二个文件的长度添加到第一个的'长度'字段。

在任何其他情况下,我建议您使用能够重新编码的库。

如果你有时间和灵感,你可以自己重新编码。

如果你根本不想为这些东西而烦恼,试着使用一个完整的程序(例如sox)来完成你所需要的。

顺便说一句。:沉默是0值,如果每个样本的这个位是有符号的,如果它们是无符号的,则是最大值的一半(通常只在8位整数中找到)。

所以要获得4秒的沉默,你需要n = 4 *采样率*通道num *(位/秒)/8乘以0

小知识:你可以使用任何常数值而不是0作为沉默