Android
ExoPlayer
Szukaj…
Dodaj ExoPlayer do projektu
Przez jCenter
w tym następujące w pliku build.gradle twojego projektu:
compile 'com.google.android.exoplayer:exoplayer:rX.X.X'
gdzie rX.XX jest preferowaną wersją. Aby uzyskać najnowszą wersję, zobacz Wydania projektu. Aby uzyskać więcej informacji, zobacz projekt na Bintray .
Korzystanie z ExoPlayer
Utwórz instancję ExoPlayer:
exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, minBufferMs, minRebufferMs);
Aby odtwarzać dźwięk, możesz użyć następujących wartości:
RENDERER_COUNT = 1 //since you want to render simple audio
minBufferMs = 1000
minRebufferMs = 5000
Obie wartości buforów można dostosować do własnych wymagań.
Teraz musisz utworzyć źródło danych. Jeśli chcesz przesyłać strumieniowo mp3, możesz użyć DefaultUriDataSource. Musisz przekazać Kontekst i UserAgent. Aby to uprościć, odtwórz plik lokalny i podaj wartość null jako userAgent:
DataSource dataSource = new DefaultUriDataSource(context, null);
Następnie utwórz sampleSource:
ExtractorSampleSource sampleSource = new ExtractorSampleSource(
uri, dataSource, new Mp3Extractor(), RENDERER_COUNT, requestedBufferSize);
uri wskazuje na twój plik, jako Extractor możesz użyć prostego domyślnego Mp3Extractor, jeśli chcesz odtwarzać mp3. RequestBufferSize może być ponownie dostosowany zgodnie z Twoimi wymaganiami. Użyj na przykład 5000.
Teraz możesz utworzyć renderer ścieżki audio, korzystając z przykładowego źródła w następujący sposób:
MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);
Na koniec wywołaj przygotowanie w instancji exoPlayer:
exoPlayer.prepare(audioRenderer);
Aby rozpocząć odtwarzanie połączenia:
exoPlayer.setPlayWhenReady(true);
Główne etapy odtwarzania wideo i audio przy użyciu standardowych implementacji 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!