【发布时间】:2021-03-02 17:26:45
【问题描述】:
我有两个音频文件,一个是 20 秒长,另一个是 10 秒长。我想混合这两个样本,以便第二个剪辑从第 5 秒开始播放到第 15 秒。如何使用 Java 的混音器来做到这一点?
【问题讨论】:
我有两个音频文件,一个是 20 秒长,另一个是 10 秒长。我想混合这两个样本,以便第二个剪辑从第 5 秒开始播放到第 15 秒。如何使用 Java 的混音器来做到这一点?
【问题讨论】:
很大程度上取决于您要达到的精度水平。
一个相对简单的编码方法是通过SourceDataLine 从AudioInputStream 播放第一个声音。这样,与Clip 对象不同,您可以计算经过的帧数。包括与触发第二个声音之前要经过的时间量相对应的目标帧计数。当到达该帧时,调用第二个声音的start 方法,该方法可以是完全准备就绪的Clip(不要通过加载或打开来增加延迟,这些事情应该提前完成)。
即便如此,第二个声音相对于第一个声音开始的确切时间可能会有一些变化。我知道它具有帧级精度的唯一方法是在同一个 while 循环中处理两个输入,手动将字节转换为 PCM,添加值,然后转换回字节并发送到单个 SourceDataLine。
【讨论】: