Android:同时播放多个mp3,具有精确同步和独立音量控制

时间:2016-09-08 17:37:15

标签: android audio media-player

我想创建一个同时播放多个mp3的Android应用程序,具有精确的同步(不到1/10秒关闭)和独立的音量控制。每个mp3的大小可能超过1MB,运行时间可达几分钟。我的理解是MediaPlayer不会进行精确同步,并且SoundPool无法处理超过1MB或5秒运行时间的文件。我正在试验superpowered并最终可能会使用它,但我想知道是否有更简单的东西,因为我不需要任何处理(混响,法兰等),这是超级能力的重点。 / p>

另外还有关于来自Google I / O 2016的Android高性能音频的YouTube视频。想知道是否有人有这方面的经验。 https://www.youtube.com/watch?v=F2ZDp-eNrh4

2 个答案:

答案 0 :(得分:1)

Superpowered最初是为我的DJ应用程序(App Store中的DJ Player)制作的,其中需要精确同步多个曲目。

因此,同步多个mp3和独立音量控制绝对是可能的,也是Superpowered的核心。您所需要的只是SuperpoweredAdvancedAudioPlayer类。

SDK中的CrossExample项目有两个玩家同步播放。

Android中的内置音频功能具有高度的设备和/或构建功能。您无法获得与这些功能集一致的功能集。一般来说,Android的音频功能并不稳定。这就是为什么你需要一个专门的音频库来完成应用程序内部的所有操作(因此不是围绕Android音频功能的“包装器”)。

答案 1 :(得分:0)

在大多数情况下,当您在Android上播放压缩文件(AAC,MP3等)时,除非输出进入USB音频接口,否则它们将在硬件中解码以节省电量。硬件编解码器接受大块数据(同样,为了节省电力)。由于无法一次发出开始播放多个流的命令,通常会发生的情况是,一个流已经将一大块压缩音频发送到硬件编解码器,它将开始播放,而其他流则#39; t尚未发送他们的数据。

您确实需要在应用中解码这些文件并混合输出以生成单个音频流。然后,您将保证所需的同步。内置的混音设备主要是为了让多个应用程序使用相同的声音输出,它们不是为多轨混音设计的。