组合现有的音频文件并从中生成新的音频文件
本文关键字:音频 文件 组合 | 更新日期: 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作为沉默