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!


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow