我已经阅读了很多关于堆栈溢出的问题,这些问题指出要混合音频,您只需要将字节帧加在一起(并确保在必要时进行裁剪)即可。但是,如果我想说将音频与具有一定偏移量的另一种音频混合,该怎么办。例如,当第一个音频达到第5秒时,我想将第二个音频混入第一个音频中。
任何帮助,将不胜感激!
最佳答案
通常,在计算机上使用音频时,您将使用PCM样本格式的时域中的音频。即,每秒多次测量该时间点的压力水平,并将其量化为数字。如果您使用CD品质的音频,则每秒441000个样本是采样率。该数字通常量化为16位整数。 (-32,767至32,768)。 (其他采样率,位深度和量化在那里并经常使用,这只是一个例子。)
如果要混合两个具有相同采样率的音频流,可以简单地将每个采样的值加在一起。如果您考虑一下,如果您要从两个来源听到声音,它们的压力水平将以几乎相同的方式相互影响。有时他们会互相抵消,有时会互相增加。您提到剪裁...您可以执行此操作,但是您将在混合中引入失真。如果声音太大而无法量化,则会将其限制在可量化范围的最大值和最小值,从而导致咔嗒声,爆裂声和音质差。如果要避免此问题,可以将每个流的级别减半,以确保即使两个流都达到最大级别,它们也将在适当的范围内。
现在,您的问题是关于将音频与偏移混合。绝对没什么不同。如果要开始混入5秒钟,则使用5 * 44,100 = 220500
,这意味着将一个流的样本零对齐到另一流的样本220500
并进行混合。
关于audio - 混音时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24600345/