2017-09-26 9 views
0

Ich versuche, drei Video-URLs zu verketten und mit Exoplayer zu spielen ConcatenatingMediaSource.Exoplayer - ConcatenatingMediaSource zwischen Haupt-URL

Was ich versucht:

MediaSource mainSource = new ExtractorMediaSource(firstVideoUri, ...); 
MediaSource secondSource = new ExtractorMediaSource(secondVideoUri, ...); 
MediaSource thirdSource = new ExtractorMediaSource(thirdVideoUri, ...); 
// Plays the first video, then second & third video. 
ConcatenatingMediaSource concatenatedSource = 
    new ConcatenatingMediaSource(mainSource, secondSource, thirdSource); 

Dieses ist für Sequenz Video-Wiedergabe funktioniert.

Mein Problem

Mein mainSource ist Film (~ 2 Stunden)

sind My secondSource & thirdSource Video Ads (2 Min)

ich nach 30 Minuten erste Videowerbung spielen müssen Film gespielt. Und müssen zweite Video-Werbung nach 60 Minuten Film gespielt spielen.

Ich brauche

Hauptfilm (erste 30 min) in folgenden Reihenfolge 3 Videos abspielen -> 2 min: Anzeigen -> Hauptfilm (31-60 min) -> 2 min zweiten Anzeigen - > Hauptfilm (61- Ende)

Meine Frage

Wie zwei Video-Urls zwischen Haupt-uRL verketten/spielen?

Irgendjemand hilft mir .. Mehr als 16 Stunden Kopfschmerzen mit diesem Problem.

Antwort

0

Endlich habe ich Lösung aus offiziellen GitHub gibt

https://github.com/google/ExoPlayer/issues/3299

Lösung ist - ClippingMediaSource

Beispielimplementierung

MediaSource movieMediaSource = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mLiveURL); 
    long oneMinute = 1000 * 1000 * 60 ; 
    ClippingMediaSource videoSource1 = new ClippingMediaSource(movieMediaSource, 0, oneMinute,false); 
    ClippingMediaSource videoSource2 = new ClippingMediaSource(movieMediaSource, oneMinute, 2 * oneMinute,false); 
    ClippingMediaSource videoSource3 = new ClippingMediaSource(movieMediaSource, 2 * oneMinute, 10 * oneMinute,false); 

    MediaSource adVideoSource1 = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mPromoVideoURL1); 
    MediaSource adVideoSource2 = MyExoPlayer.getMediaSourceFromUrl(StreamPlayerActivity.this, mPromoVideoURL2); 
    ConcatenatingMediaSource concatenatingMediaSource = new ConcatenatingMediaSource(videoSource1, adVideoSource1, videoSource2, adVideoSource2, videoSource3);