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

hpxqektj  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(398)

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

ff29svar

ff29svar1#

很大程度上取决于你所追求的精确度。
一个相对容易的编码方法是通过 SourceDataLine 从一个 AudioInputStream . 用这个,不像用 Clip 对象,可以计算经过的帧数。包括与触发第二个声音之前要经过的时间量相对应的目标帧计数。当到达该帧时,调用 start 第二个声音的方法,可以是 Clip 准备就绪(不要通过加载或打开来增加延迟,这些事情应该提前完成)。
即便如此,相对于第一个声音,第二个声音开始的确切时间可能会有一些变化。我知道它具有帧级精度的唯一方法是以相同的方式处理两个输入 while 循环,手动将字节转换为pcm,添加值,然后转换回字节并传送到单个 SourceDataLine .

相关问题