2015-04-27 9 views
6

Ho un problema molto strano. La mia app OSX sta generando un video mp4 basato su un cast dello schermo. Per qualche ragione, se apro questo video in Quicktime o qualsiasi AVPlayer basato su OSX, inizierà circa 14-15 frame in anticipo rispetto al frame 0. Se apro l'mp4 con Chrome o Firefox, inizierà effettivamente a giocare al frame 0Il video mp4 inizia in momenti diversi su Quicktime/AVplayer vs Chrome/Firefox

Cosa potrebbe causare l'ignoranza dei telegrammi iniziali? Ecco uno screenshot di un conto alla rovescia del timer che confronta Quicktime vs Firefox al tempo zero. Nota come il player di Firefox inizia alle 9:55, mentre il player Quicktime salta in avanti alle 9:54. enter image description here

Ecco il mio sample mp4 file se desideri vedere di persona.

Grazie

risposta

3

Questa è una domanda interessante e il vostro esempio è una grande illustrazione degli effetti.

Utilizzando ffprobe di guardare il file si è collegato al di sopra dà:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'c44116b.mp4': 
    Metadata: 
    major_brand  : qt 
    minor_version : 0 
    compatible_brands: qt 
    creation_time : 2015-04-25 15:54:30 
    Duration: 00:00:03.70, start: 0.957000, bitrate: 1164 kb/s 
    Stream #0:0(und): Video: h264 (Main) (avc1/0x31637661), yuv420p(tv, bt709), 480x360 [SAR 1:1 DAR 4:3], 899 kb/s, 22.99 fps, 22.99 tbr, 6k tbn, 12k tbc (default) 
    Metadata: 
     creation_time : 2015-04-25 15:54:30 
     handler_name : Core Media Data Handler 
     encoder   : H.264 

Si può vedere qui che ffprobe sta segnalando una 'start' di 0,957 mila, il che corrisponderebbe al 1 secondo offset.

Questo non spiega perché alcuni giocatori rispettano questo e altri lo ignorano (anche il lettore Windows Media sembra iniziare dall'inizio piuttosto che l'offset). AGGIORNAMENTO: Roman sottolinea che questo è un comportamento noto ed è stato discusso nella lista ffmpeg (vedi la risposta di Roman). Ciò potrebbe essere dovuto alla cronologia del formato contenitore mp4, che è cresciuto rispetto alle specifiche Apple QuickTime.

Lo scopo del parametro di avvio sembra essere quello di consentire un offset della traccia per scopi di sincronizzazione. Perché questo esisterebbe nel tuo video con una sola traccia non è chiaro.

UPDATE: Questo è probabilmente più informazioni che chiunque vuole, ma per chi fosse interessato ...

Facendo seguito alla risposta di Romano ho preso uno sguardo al file MP4 in modo più dettagliato con MP4 Browser. Da questo possiamo vedere in primo luogo la 'scala temporale' del film:

enter image description here

E poi la modifica dell'atomo (o casella di modifica, come gli atomi sono chiamate anche nel mondo mp4):

enter image description here

Il campo del tempo nell'atomo di modifica dice al giocatore di saltare i primi 5742 "campioni" e iniziare da lì. Utilizzando queste informazioni con i tempi, che ci dice quanti campioni ci sono al secondo, possiamo calcolare il tempo che dovrebbe ritardare:

  • 5742/6000 = 0,957

Ciò corrisponde con l' 'inizio tempo 'che riporta ffprobe e anche con il ritardo che l'OP ha segnalato.

3

Il file ha un Edit atom, che definisce una parte del file da riprodurre come traccia.

Alcuni demultiplexers prendono in considerazione (iniziano da 54:24) e altri ignorano (iniziano da 55:24).

Un caso simile è discusso qui nel biglietto FFmpeg: adher to start media time in QuickTime edts/elst.

Quicktime e VLC successivamente riproducono il file in base all'elenco di modifica, ma ffmpeg utilizza l'intera sequenza temporale.

Problemi correlati