混音两个PCM流的音频

3
我正在使用Windows的mmSystem.h来生成一些pcm文件。实际上它们还不是文件,只是字节数组。我想要将这两个流合并或混音,以便在将它们导出到wav文件之前让声音重叠。在StackOverflow上搜索,每个人都提到使用ffmpeg,但没有一个人有示例代码,他们只是使用带有一些标志的fmpeg.exe。我更喜欢一个解决方案,它不需要我使用除Windows和ffmpeg之外的任何其他第三方库或SDK。
谢谢任何帮助。

你的意思是你有两个单声道流,想要将它们混合成立体声吗?还是你想用新样本覆盖现有的通道? - Jonathan Potter
1
我想要将它们叠加在一起。 - noztol
2个回答

9
如果您有字节数组,必须先将这些字节数组转换为正确的样本格式,例如16位整数(short)。完成后,您有几个选项,包括:
1. 按样本平均数据。 2. 逐个样本累加数据,然后“剪辑”任何超出范围的样本。
第一种选择是不失真地执行操作的唯一正确方式。
最后,您可能需要转换回字节以保存到文件中。
有关更多详细信息,包括代码,您可能需要查看 类似教程的内容

1
我想点赞,但我的声望不够高,所以希望一句感谢能代替。 - noztol

0
假设这两个流具有相同的采样率和每个采样的位数,您可以直接将样本相加:
merged[n] = streama[n] + streamb[n];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接