Я пробовал MediaPlayer, ExoPlayer, SoundPool. У всех из них был пробел при записи аудиофайлов длиной 15 сек. Есть ли какое-либо решение или библиотека?Есть ли какая-нибудь библиотека для беззаботного аудио-цикла?
1
A
ответ
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. Вы можете комбинировать все источники мультимедиа в дереве.
Единственная проблема заключается в том, что структура MediaSources, которую вы даете игроку в подготовке, является статичной.
0
Вместо этого вы можете использовать LoopingMediaSource.
MediaSource source = new ExtractorMediaSource(videoUri, ...);
// Loops the video indefinitely.
LoopingMediaSource loopingSource = new LoopingMediaSource(source);
Ref: https://google.github.io/ExoPlayer/guide.html#seamlessly-looping-a-video
вы пытались это mediaPlayer.setLooping (истина); ?? –
Конечно. Но между двумя играми есть небольшой разрыв. Мне нужен бесцельный цикл. –
попробуйте http://stackoverflow.com/a/13410499/5545429 –