繁体   English   中英

Android - 同时将两个或多个WAV文件合并(加入)到一个(混合)

[英]Android - merge (join) two or more WAV files into one (mix it) simultaneously

我想在我的应用程序中将更多WAV文件合并到一个WAV文件中。 但我不想连续组合它们(如File1-File2-File3 ......)但所有文件应该同时启动(同时/同时)。

这是否可以在Android中使用而不使用某些本机库(如FFmpeg)? 我查看了AudioTrackSoundPool但我认为这不是解决这个问题的方法。

另外我发现这篇文章Android:如何混合2个音频文件并用soundPool重现它们但是如何组合来自更多WAV文件的字节?

如果您使用AudioTrackSoundPool ,您将无法精确同步播放,而且很可能很容易听到。 另一个问题是你的文件可能有不同的声级,因此更柔和的声音将被更响亮的声音掩盖(想想在一段柔和的古典音乐之上播放一些流行音乐)。 您可能需要规范化输入声音文件的级别。

要同时进行精确合并和标准化,您必须自己混合文件的声音内容,然后播放结果输出。 您需要自己读取.wav文件作为二进制流,因为Android缺少Java的AudioInputStream类,这可以使这更容易。 将此视为如何使用基本IO类执行此操作的示例:

https://thiscouldbebetter.wordpress.com/2011/08/14/reading-and-writing-a-wav-file-in-java/

现在,您将声音数据作为short整数数组。 这个答案描述了如何将样本数据从整数转换为浮点并合并两个音频流,同时规范化它们的声级:

https://stackoverflow.com/a/32023546/4477684

为了合并两个声音输入,首先合并两个,然后将结果与第三个输入合并,依此类推。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM