是否有任何无间隙音频循环库?

时间:2016-08-25 06:45:31

标签: android android-mediaplayer exoplayer

我尝试过MediaPlayer,ExoPlayer,SoundPool。当循环播放15秒长的音频文件时,所有这些都有差距。有没有解决方案或库?

2 个答案:

答案 0 :(得分:0)

Exoplayer2的新版本支持无间隙音频,从id3标头读取所有信息。 您只需创建一个包含所有曲目的ConcatenatingMediaSource,如果它们在标题中包含无间隙信息,则播放器本身将自动将它们组合在一起。

使用Exoplayer2演示:

String[] uriStrings = new String[]{
        Environment.getExternalStorageDirectory()+"/Music/gapless/temp1.mp3",
        Environment.getExternalStorageDirectory()+"/Music/gapless/temp2.mp3"
};
uris = new Uri[uriStrings.length];
for (int i = 0; i < uriStrings.length; i++) {
    uris[i] = Uri.parse(uriStrings[i]);
}

MediaSource[] mediaSources = new MediaSource[uris.length];
for (int i = 0; i < uris.length; i++) {
    mediaSources[i] = buildMediaSource(uris[i], extensions[i]);
}
MediaSource mediaSource = new ConcatenatingMediaSource(mediaSources);

player.prepare(mediaSource, !shouldRestorePosition);

还有LoopingMediaSource来管理MediaSources的循环。 您可以在树中组合所有媒体源。

所有这一切的唯一问题是你在准备中给予玩家的MediaSource的结构是静态的。

答案 1 :(得分:0)

您可以使用LoopingMediaSource作为源代码。

DTO

参考:https://google.github.io/ExoPlayer/guide.html#seamlessly-looping-a-video