2016-08-25 59 views
1

我試過MediaPlayer,ExoPlayer,SoundPool。當循環15秒長的音頻文件時,它們都有差距。有沒有解決方案或庫?有沒有用於無間隙音頻循環的庫?

+0

你試試這個mediaPlayer.setLooping(真); ?? –

+0

當然。但兩場比賽之間差距很小。我需要無縫循環。 –

+0

試試這個http://stackoverflow.com/a/13410499/5545429 –

回答

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結構是靜態的。