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ühreE / 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!
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.
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.
Tags und Links android http-live-streaming closed-captions