Java 如何在不同时间混合两个音频文件?

Java 如何在不同时间混合两个音频文件?,java,audio,mixer,Java,Audio,Mixer,我有两个音频文件,一个20秒长,另一个10秒长。我想混合两个样本,以便第二个剪辑从第5秒开始播放到第15秒。如何使用Java的混合器来实现这一点?很大程度上取决于您所追求的精度级别 编写代码相对简单的方法是通过SourceDataLine从AudioInputStream播放第一个声音。与剪辑对象不同,使用此选项可以计算经过的帧数。包括与触发第二个声音之前要经过的时间量相对应的目标帧计数。当到达该帧时,调用第二个声音的start方法,该声音可以是完全准备就绪的Clip(不要通过加载或打开来增加延

我有两个音频文件,一个20秒长,另一个10秒长。我想混合两个样本,以便第二个剪辑从第5秒开始播放到第15秒。如何使用Java的混合器来实现这一点?

很大程度上取决于您所追求的精度级别

编写代码相对简单的方法是通过
SourceDataLine
AudioInputStream
播放第一个声音。与
剪辑
对象不同,使用此选项可以计算经过的帧数。包括与触发第二个声音之前要经过的时间量相对应的目标帧计数。当到达该帧时,调用第二个声音的
start
方法,该声音可以是完全准备就绪的
Clip
(不要通过加载或打开来增加延迟,这些事情应该事先完成)

即使如此,第二个声音相对于第一个声音开始的确切时刻可能会有一些变化。我知道它具有帧级精度的唯一方法是在相同的
循环中处理两个输入,手动将字节转换为PCM,添加值,然后转换回字节并发送到单个
源数据线