2013-02-01 19 views
6

Cerco di inserire i metadati temporizzati in un file video .mov o .mp4. ho letto su di esso qui:Inserire i metadati temporizzati in HLS (HTTP Live Stream) utilizzando id3taggenerator e mediafilesegmenter

In sostanza, il mio problema è che tutto ciò che provo, ho l'.m3u8 generato e un mazzo di. file ts come previsto senza errori, ma mi sento come se i metadati non fossero inseriti.

Lasciatemi spiegare in dettaglio cosa faccio.

Per prima cosa ho generare alcuni tag ID3 come segue:

id3taggenerator -o tag1.id3 -t "Test" 

poi scrivo un file di testo macro denominata 'macrofile.txt' contenente:

5 id3 tag1.id3 

mi assicuro che il file termina con un carattere di nuova riga e ciascun campo è separato da un singolo spazio e non da tabulazioni.

allora io uso mediafilesegmenter per creare il M3U8 con i file .ts con il comando che includono anche il MACROFILE come segue:

mediafilesegmenter -index-file test.m3u8 -M macrofile.txt -no-floating-point-duration -iframe-index-file none test.mp4 

Questo genererà correttamente il file M3U8 + un gruppo di file .ts (uno ts per 10 sec del video)

a caricare quelli sul mio webserver, (ovviamente aggiunti i tipi MIME di destra, ecc) e dalla mia app iOS, apro il flusso:

NSURL* url = [NSURL URLWithString:@"http://url.com/test.m3u8"]; 
player = [[MPMoviePlayerController alloc] initWithContentURL:url]; 

Assicurati anche di aggiungere la notifica MPMoviePlayerTimedMetadataUpdatedNotification come segue:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; 
[center addObserver:self 
      selector:@selector(metadataUpdate:) 
       name:MPMoviePlayerTimedMetadataUpdatedNotification 
      object:nil]; 

Ora il problema è che, il MPMoviePlayerTimedMetadataUpdatedNotification non viene mai attivato.

Se provo con il flusso di test Apple (https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8) che include i metadati a tempo ogni 5 secondi -> funziona perfettamente

Quindi questo è il motivo per Suppongo che i miei file .ts generati non contiene tutti i metadati o almeno Sto facendo qualcosa di sbagliato da qualche parte, ma ho controllato tutto quello che potevo e ora sono fuori di idee.

Spero che qualcuno possa aiutarmi con questo.

Grazie!

+0

Hai provato ad aprire un file .ts in un editor esadecimale? Gli ID3 dovrebbero apparire chiaramente in primo piano se sono lì –

+0

Quando si iniettano i metadati usando un file macro con mediafilesegmenter versione beta 1.1 (130110) semplicemente non funziona. Quando guardo con un editor esadecimale, si iniettano solo ID3 vuoto. Se inserisco id3 usando il parametro -F -y (senza usare un file macro), posso vedere chiaramente nell'editor HEX il giusto ID3 e funziona. IL PROBLEMA: per iniettare i metadati temporizzati, puoi farlo solo con un file macro ... Qualcuno con lo stesso problema? Inizio a chiedermi se non è un bug in questa versione del mediafilesegmenter .. Forse qualcuno può indicarmi una versione precedente dell'installer per provare ?? Grazie –

risposta

4

Dopo aver trascorso un po 'più di tempo su questo, ho deciso di contattare il supporto tecnico degli sviluppatori Apple.

Si tratta effettivamente di un bug nell'ultima versione dello strumento mediafilesegmenter 1.1 (130110)

Ecco il link diretto per accedere al bug report https://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/67/wo/quUWkJlEHk4L6S6U9geEZ0/21.83.28.0.13

L'ID BUG è

io aggiornare la mia risposta qui non appena il bug è stato risolto o una soluzione mi è stata data da Apple.

+0

Anche provato con mediafilesegmenter versione 1.1 (120821) e non funziona neanche. Proverò a trovare una versione precedente. –

+0

Mi piacerebbe sapere se ne trovi uno che funziona! – GnarlyDog

+0

Questo bug sembra essere corretto con gli strumenti di streaming live HTTP rilasciati il ​​25 aprile 2013. – GnarlyDog