Android
ExoPlayer
Поиск…
Добавить ExoPlayer в проект
Через jCenter
включая следующее в файле build.gradle вашего проекта:
compile 'com.google.android.exoplayer:exoplayer:rX.X.X'
где rX.XX - ваша предпочтительная версия. Последнюю версию см. В выпусках проекта. Для получения дополнительной информации см. Проект на Bintray .
Использование ExoPlayer
Создайте экземпляр своего ExoPlayer:
exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, minBufferMs, minRebufferMs);
Чтобы воспроизводить только аудио, вы можете использовать следующие значения:
RENDERER_COUNT = 1 //since you want to render simple audio
minBufferMs = 1000
minRebufferMs = 5000
Оба значения буфера могут быть изменены в соответствии с вашими требованиями.
Теперь вам нужно создать DataSource. Когда вы хотите потоковое mp3, вы можете использовать DefaultUriDataSource. Вы должны передать Контекст и UserAgent. Чтобы упростить воспроизведение локального файла и передать null в качестве userAgent:
DataSource dataSource = new DefaultUriDataSource(context, null);
Затем создайте sampleSource:
ExtractorSampleSource sampleSource = new ExtractorSampleSource(
uri, dataSource, new Mp3Extractor(), RENDERER_COUNT, requestedBufferSize);
uri указывает на ваш файл, в качестве Extractor вы можете использовать простой Mp3Extractor по умолчанию, если хотите воспроизвести mp3. requestBufferSize может быть изменен в соответствии с вашими требованиями. Например, используйте 5000.
Теперь вы можете создать свой рендерер звуковой дорожки, используя источник примера, следующим образом:
MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);
Наконец, позвоните в свой экземпляр exoPlayer:
exoPlayer.prepare(audioRenderer);
Для запуска воспроизведения:
exoPlayer.setPlayWhenReady(true);
Основные шаги для воспроизведения видео и аудио с использованием стандартных реализаций TrackRenderer
// 1. Instantiate the player.
player = ExoPlayer.Factory.newInstance(RENDERER_COUNT);
// 2. Construct renderers.
MediaCodecVideoTrackRenderer videoRenderer = ...
MediaCodecAudioTrackRenderer audioRenderer = ...
// 3. Inject the renderers through prepare.
player.prepare(videoRenderer, audioRenderer);
// 4. Pass the surface to the video renderer.
player.sendMessage(videoRenderer, MediaCodecVideoTrackRenderer.MSG_SET_SURFACE, surface);
// 5. Start playback.
player.setPlayWhenReady(true);
...
player.release(); // Don’t forget to release when done!