Rendering Closed Captions für HLS-Streams auf Android

8

Ich arbeite an einer nativen Android-Anwendung, die HLS-Video streamt. Ich versuche CEA-608-Untertiteldaten anzuzeigen, aber ich stoße auf ein Problem.

Methodik: Ich benutze ein Jelly-Bean-Gerät (API 4.1+), das Untertitel und HLS-Wiedergabe unterstützt ( Ссылка ).

Testfeed: Ich teste den Apple-Beispiel-HLS-Bip-Bop-Feed, der Bildunterschriften-Daten enthält ( Ссылка )

Daten zur Grabungsunterschrift: Wie in der Android-Dokumentation beschrieben, versuche ich, die Untertitelspur durch Aufruf von:

zu erhalten

"MediaPlayer.getTrackInfo()"

Problem: Der Player stürzt ab, wenn ich die getTrackInfo () Zeile mit der folgenden Ausgabe in LogCat:

ausführe

E / AndroidRuntime (7311): FATALE AUSNAHME: Haupt E / AndroidRuntime (7311): java.lang.RuntimeException: Fehlercode: -38

Fragen: 1) Ist das Rendern von Untertiteln aus In-Stream-Titeldaten in einem HLS-Feed möglich, der in nativen Android-Apps unterstützt wird? 2) Wenn nicht, gibt es Alternativen? 3) Die Dokumentation im obigen Link (unten zitiert) zeigt an, dass In-Stream-Untertitel auf MP4- oder 3GPP-Medienquellen unterstützt werden. Schließt dies notwendigerweise HLS (von dem ich glaube, dass es auf MPEG-2 basiert) davon ab, zu arbeiten?

  

Der MediaPlayer verarbeitet jetzt sowohl In-Band- als auch Out-of-Band-Textspuren.   In-Band-Textspuren kommen als Textspur innerhalb eines MP4- oder 3GPP-Mediums   Quelle. Out-of-Band-Textspuren können als externer Text hinzugefügt werden   Quelle über die addTimedTextSource () -Methode. Nach allen externen Textspuren   Quellen werden hinzugefügt, getTrackInfo () sollte aufgerufen werden, um die   aktualisierte Liste aller verfügbaren Tracks in einer Datenquelle.

Danke für jede Hilfe, die Sie anbieten können!

    
Bob Cowherd 07.02.2013, 00:54
quelle

2 Antworten

5

Wir haben genau die gleiche Übung gemacht. MediaPlayer unter Android scheint CEA-608, das in HLS integriert ist, nicht zu unterstützen. OnTimedTextListener wurde nie aufgerufen, als Media Player (MP) abgespielt wurde. Beim Versuch, getTrackInfo () aufzurufen, wenn MP abgespielt wurde, kam es zu einem Absturz, wie Sie bereits erwähnt haben.

Darf Android MP kann nur enthaltene SRT in MP4 decodieren.

Alternativ könnte eine externe zeitgesteuerte Textspur verwendet werden, aber in der Live-Streaming-Umgebung wird es schwierig.

    
Azul 07.02.2013 20:34
quelle
0

Die Frage ist ziemlich alt, aber einige Leute könnten immer noch das Problem haben.

ExoPlayer versucht, das Problem als eine von der Android-Version unabhängige allgemeine Multimedia-Bibliothek zu lösen.

Es unterstützt derzeit CEA-608, SubRip, TTML, TX3g und WebVtt Untertitel. Natürlich nicht alle Standards, aber ein nützlicher Teil von ihnen.

    
Habib 06.02.2016 06:00
quelle