如何通过重叠2个相邻音频文件之间的某些区域来播放音频文件?

问题描述 投票:0回答:1

我有5个音频文件,每个文件的长度为5秒。我想逐个播放每个声音文件,但条件是如果播放下一个文件的音频文件应在4秒后播放,即相邻的音频文件声音应重叠1秒钟。我该如何实现它?哪个是你能推荐的最好的音频播放器?

android android-mediaplayer exoplayer soundpool
1个回答
0
投票

在Java端,你可以使用音频播放进行的具体工作量在android上非常有限。

听起来你需要在播放过程中的某些时刻混合你的声音才能重叠。

在我脑海中这样做的最好方法是通过一个名为Oboe的C ++库(我目前正在使用它)。这是由Google创建的用于音频播放的库。现在抓住,让我解释一下!我知道实现C ++(特别是如果你现在只在Java堆栈上)可以为你的项目增加一些时间。

之所以想到这一点,是因为通过这种方式播放音频(通过Oboe / C ++),您可以通过buffer stream物理移动音频样本的各个位。 C ++库实际上还有一个Mixer类,您可以将2个不同的音频样本(实际上最多100个)放入混合,然后最终通过缓冲流进行渲染。

使用此方法,您可以添加特定逻辑来管理音频何时开始播放(如果相邻则在4秒后)。此时,您可以将下一个剪辑的第一秒与当前播放剪辑混合。

现在令人兴奋的是,您可以用Java复制这个过程!我发现这篇帖子可能对你有所帮助:

Android: How to mix 2 audio files and reproduce them with soundPool

现在我警告你,以这种方式(通过缓冲流)渲染音频是一个复杂的过程,可能需要一些额外的研究才能完全理解这个过程。我不能说我知道Java音频库的所有功能,但我愿意打赌他们没有太多支持以你需要的方式混合声音。所以很可能你必须自己混合,或者你的最后手段可能是使用NDK(C ++)。

希望这个答案有所帮助。祝你研究中的美好祝福!希望你能找到一种有效的简单方法。 (如果你这样做,不要忘记在这个问题上分享你的发现!)

© www.soinside.com 2019 - 2024. All rights reserved.