2015-06-25 23 views
9

Ich bin derzeit auf der Suche nach einer Anwendung, die Dash über den ExoPlayer in Android nutzt.Erstellen einer einfachen Instanz von ExoPlayer

Zunächst gehe ich durch das Demo-Projekt, habe aber Probleme damit, eine einfach funktionierende Instanz des ExoPlayers zu erstellen, die mp3 oder ähnliches streamen kann.

Würde wirklich jede Hilfe schätzen, die jemand geben kann bezüglich einer sehr einfachen exoplayer Instanz arbeiten, von der ich anpassen und auf bauen kann oder wenn jemand irgendwelche Anhaltspunkte für mehr Referenzen oder Führer hat, denen ich folgen kann, wie es sehr scheint kleine Dokumentation verfügbar.

Vielen Dank für alle und jede Hilfe!

Antwort

17

Zunächst einmal instanziiert Ihre ExoPlayer mit dieser Zeile:

exoPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, minBufferMs, minRebufferMs); 

Wenn Sie nur Audio abspielen möchten Sie diese Werte verwenden können:

RENDERER_COUNT = 1 //since you want to render simple audio 
minBufferMs = 1000 
minRebufferMs = 5000 

Beide Pufferwerte können nach gezwickt werden, um Ihre Anforderungen

Jetzt müssen Sie eine DataSource erstellen. Wenn Sie MP3 streamen möchten, können Sie die DefaultUriDataSource verwenden. Sie müssen den Kontext und einen UserAgent übergeben. Um es einfach spielt eine lokale Datei und übergeben Sie null als Useragent:

DataSource dataSource = new DefaultUriDataSource(context, null); 

Dann erstellen die sampleSource:

ExtractorSampleSource sampleSource = new ExtractorSampleSource(
        uri, dataSource, new Mp3Extractor(), RENDERER_COUNT, requestedBufferSize); 

uri Punkte auf Ihre Datei als Extractor Sie einen einfachen Standard-Mp3Extractor verwenden können, wenn Du willst mp3 spielen. requestedBufferSize kann nach Ihren Wünschen angepasst werden. Verwenden Sie zum Beispiel 5000.

Jetzt können Sie Ihre Audio-Track-Renderer mit der Probenquelle wie folgt erstellen:

MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource); 

rufen schließlich auf exoPlayer Instanz vorbereiten:

exoPlayer.prepare(audioRenderer); 

Wiedergabe Anruf zu starten:

exoPlayer.setPlayWhenReady(true); 
+0

Vielen Dank für Ihren Kommentar, Exoplayer ist meiner Meinung nach ein großer Vorteil für Android, aber im Moment ist es unter anfänger freundlich Dokumentation, aber vielleicht Anfänger sollten wegbleiben, bis sie es besser wissen eh! Ich habe eine andere Frage, die ich gerade bezüglich des Spielers gestellt habe, an dem ich etwas Input lieben würde, wenn Sie denken, dass Sie auch damit helfen könnten! danke! –

+0

Super, aber wie zeigst du das Video? Mit VideoView? .. Nevermind, gerade gefunden https://github.com/brianwernick/ExoMedia/ – Stephane

+1

@MaxMarshall und Misform Wie kann ich eine AAC-Datei abspielen? Was sollte der Extractor dann sein? –

6

So würden Sie es mit der neuen ExoPlayer 2 API und dermachen.

Erstellen Sie zunächst den Spieler:

DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); 
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, bandwidthMeter); 

TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter); 
DefaultTrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); 
LoadControl loadControl = new DefaultLoadControl(); 

SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector, loadControl); 

player.addListener(...); // To receive events from the player 

Dann wird Ihr MediaSource erstellen. Für MP3 können Sie ExtractorMediaSource verwenden:

ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory(); 
Uri uri = Uri.parse(mp3UriString); 
Handler mainHandler = new Handler(Looper.getMainLooper()); 
MediaSource mediaSource = new ExtractorMediaSource(uri, dataSourceFactory, extractorsFactory, mainHandler, mediaSourceListener); // Listener defined elsewhere 

Dann bereiten und spielen, wenn Sie bereit:

player.prepare(mediaSource); 
player.setPlayWhenReady(true); 

für DASH würden Sie DashMediaSource statt ExtractorMediaSource verwenden.

+0

** Update **: DataSource.Factory dataSourceFactory = neue DefaultDataSourceFactory (Kontext, Util.getUserAgent (Kontext, "exoplayer2example"), bandwidthMeter) –

Verwandte Themen