2013-02-07 14 views
8

Sto lavorando a un'applicazione Android nativa che trasmette video HLS. Sto cercando di visualizzare i dati dei sottotitoli codificati CEA-608, ma sto riscontrando un problema.Rendering sottotitoli per flussi HLS su Android

Metodologia: Io corro su un dispositivo fagiolo di gelatina (API 4.1+), che supporta sottotitoli e la riproduzione HLS (http://developer.android.com/about/versions/android-4.1.html#Multimedia).

prova Feed: sto testando utilizzando il campione HLS di alimentazione di Apple bip-bop che contiene i dati didascalie (https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8)

grabbing Didascalia dati: Come per la documentazione di Android, sono il tentativo di ottenere la traccia di sottotitoli chiamando:

"MediaPlayer.getTrackInfo()"

Problema: Le crash giocatore Quando eseguire la linea getTrackInfo(), con il seguente output in LogCat:

E/AndroidRuntime (7311): eccezione irreversibile: main E/AndroidRuntime (7311): java.lang.RuntimeException: guasto codice: -38

Domande: 1) è chiuso il rendering didascalia dai dati didascalia in-stream su un feed HLS supportati in applicazioni Android native? 2) In caso contrario, ci sono alternative? 3) La documentazione nel link sopra (citata sotto) indica che i sottotitoli in-stream sono supportati su sorgenti multimediali MP4 o 3GPP. Esclude necessariamente HLS (che credo sia basato su MPEG-2) dal lavoro?

MediaPlayer ora gestisce sia le tracce di testo in-band che quelle fuori banda. Le tracce di testo in banda vengono fornite come una traccia di testo all'interno di un supporto MP4 o 3GPP . Le tracce di testo fuori banda possono essere aggiunte come testo esterno tramite il metodo addTimedTextSource(). Dopo aver aggiunto tutte le fonti di testo esterno , è necessario chiamare getTrackInfo() per ottenere l'elenco aggiornato di tutte le tracce disponibili in un'origine dati.

Grazie per l'aiuto che puoi offrire!

risposta

5

Siamo passati attraverso lo stesso identico esercizio. MediaPlayer su Android non sembra supportare CEA-608 incorporato in HLS. OnTimedTextListener non è mai stato chiamato durante la riproduzione del lettore multimediale (MP). Cercando di chiamare getTrackInfo() quando MP stava giocando si è verificato un arresto anomalo, come hai detto.

Può essere Android MP può decodificare solo SRT incluso in MP4.

L'alternativa sarebbe utilizzare la traccia di testo temporizzata esterna ma nell'ambiente di live streaming, sarà difficile.

+1

Sapete se le versioni più recenti di Android supportano i sottotitoli WebVTT che sono stati recentemente aggiunti alla bozza delle specifiche HLS? – vipw

0

La domanda è abbastanza vecchia, ma alcune persone potrebbero ancora affrontare il problema.

ExoPlayer tenta di risolvere il problema come una libreria multimediale generale indipendente di versione Android.

Attualmente supporta i sottotitoli CEA-608, SubRip, TTML, TX3g e WebVtt. Naturalmente non tutti gli standard, ma una parte utile di essi.

Problemi correlati