2016-04-04 9 views
1

Ich verwende Andorid ExoPlayer, um Inhalte aus dem Internet über http (HLS) zu streamen. Wenn ich den Player starten es funktioniert ok, aber wenn ich versuche, die Qualität des Spielinhalt zu ändern -Android ExoPlayer ausgewählten Track ändern

player.setSelectedTrack(TYPE_VIDEO, 1)

zum Beispiel, ich und HTTP 403 Forbidden Fehler. Wenn ich den Player initialisiere und den Inhalt erneut starte, ist das in Ordnung. Ich verwende das Demo-Projekt als Quelle.

Weißt du, was dieses Verhalten verursachen könnte und was ist der Unterschied beim Abspielen des ersten Streams und beim Ändern des Tracks?

Gibt es eine Möglichkeit, das Streaming zurückzusetzen, ohne den gesamten Player neu zu initialisieren, weil die URL beim Initialisieren des Players an den Builder übergeben wird?

Antwort

1

Ich habe das Problem gefunden. Die URL, die ich an den ExoPlayer übergeben habe, wurde von einer externen API zurückgegeben und war ziemlich lang, so dass ich nicht bemerkt habe, dass es tatsächlich 2 URLs sind, die durch "|" (http://my_url_1.m3u8|http://my_url_2.m3u8) verkettet sind. Das Seltsame ist, dass, wenn Sie diese Zeichenfolge an den ExoPlayer übergeben, ein Stream ohne Fehler abgespielt wird. Aber wenn Sie versuchen, die Qualität des abgespielten Streams zu ändern, haben Sie Probleme.

1

Sie ändern die Qualität des Streams nicht mit setSelectedTrack(). Das wird verwendet, um aus den verfügbaren Streams auszuwählen, was gespielt werden soll (z. B. welche Sprache von Audio, Untertitel oder für Videos ist es ziemlich selten, aber zum Beispiel können Sie unterschiedliche Kamerawinkel eines Sportereignisses einstellen).

Alle diese Streams können mehrere Qualitätsstufen haben, und ExoPlayer's FormatEvaluator wählt basierend auf den Netzwerkbedingungen aus, welche Qualität heruntergeladen werden soll.

Wenn der Decoder anders ist, wenn Sie eine neue Spur auswählen, muss der Player zur Fortsetzung der Wiedergabe neu initialisiert werden.

Ich empfehle, das HLS-Manifest (.m3u8) manuell herunterzuladen, und überprüfen Sie dann die aufgelisteten Informationen, versuchen Sie die URLs einzeln in einem Browser. Alles sollte funktionieren, Sie sollten auch keinen 403 Test in diesem Test bekommen.