如何在Android中循环播放音频而不出现间隙?

22

我想在安卓平台上实现无缝循环音频。我尝试使用代码mediaplayer.setLooping(true)来循环播放音频,但每当第一段音频结束并开始下一段音频时,总会出现微小的暂停。


我也是新手,但我有一个问题。也许你的声音中有间隔? - Not Amused
4个回答

16

尝试在您的应用程序中使用.ogg文件格式作为音频文件。我曾遇到相同问题,经过大量研究后,我尝试使用.ogg格式,在安卓系统中它可以无间断地循环播放。

.ogg格式的信息:http://en.wikipedia.org/wiki/.ogg

您可以使用流行的开源软件VLC Media Player将您的音频文件从.mp3或其他格式转换为.ogg。


1
还有在使用 SoundPool 时也很有帮助。 - weston
12
在我这个情况下没有生效 :/ - gkiko
非常感谢,这几乎救了我的命。我已经花了3天的时间寻找同样的解决方案。 - Aman Systematix
您需要使用某些标签编辑器向 .ogg 文件添加一个新的标签(ANDROID_LOOP = true)。然后,如果通过 mediaPlayer 运行它,它可能会无间隔地循环播放(这取决于您的声音是否实际上有间隔)。注意:这样做可能会失去对 mediaPlayer.setLooping(true) 的控制。这对使用 RingtoneManager 进行铃声循环非常有帮助。 - Alex

7

1
重复别人所说的话,使用OGG格式就可以了。我发现Audacity在剪辑文件中去除任何“空白”并将其保存为.OGG方面做得很好。最好的部分是Audacity是免费的。 - Steven McConnon
2
我尝试使用Audacity创建.OGG文件,但是对于我的21秒音频样本,我发现它无法提供无间隙播放。 - CODE-REaD
1
你需要使用Audacity来修剪音频文件,以使其无缝连接。 - Steven McConnon
4
如果你的意思是确保音频文件开头和结尾没有静默,那么是的,我已经做到了。我还调整了波形,在文件的开头和结尾"归零"。我可以使用Audacity的"循环播放"(shift-space)命令播放样本,听不到间隔声。我有什么遗漏吗? - CODE-REaD

3
值得注意的是,Jelly Bean(API级别16)增加了无间隙播放功能。它允许您设置一个次要的媒体播放器来播放下一个音频流,只要主要播放器还没有完成当前音频的播放。这可能会被用来创建无间隙的“循环”。 < p >public void setNextMediaPlayer (MediaPlayer next)< /p > 显然,这对大多数市场并没有太大帮助(目前<3%的设备正在运行JB),但仍然值得一提。

2
通常情况下没有问题,除非你使用的手机非常慢。
我建议使用音频编辑软件如Audacity再次检查声音文件,以确保文件开头或结尾没有静音。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接