/ / Il file Mov ha più frame di quelli scritti / Possibile problema di utilizzo del writer AVAsset per iOS: iOS, video, mov, formati

Il file Mov ha più frame di quelli scritti / Possibile problema di utilizzo del writer AVAsset di iOS - ios, video, mov, formati

Ho generato manualmente un file video .mov.

Ecco un link a un file di esempio: collegamento, Ho scritto alcune cornici per immagini e poi dopo alunga pausa ha scritto circa 15 fotogrammi di immagini solo per enfatizzare il mio punto a scopi di debutto. Quando estraggo immagini dal video, ffmpeg restituisce circa 400 fotogrammi anziché i 15-20 previsti. Questo perché l'API che sto utilizzando sta inserendo automaticamente questi file di immagine? Fa parte del formato di file .mov che richiede questo? O è dovuto al modo in cui la libreria estrae i fotogrammi dell'immagine dal video? Ho provato a cercare in Internet ma non sono riuscito a trovare una risposta.

Il mio caso d'uso è che sto cercando di scrivere il"dati del sensore" correnti (dal core motion) dal core motion durante la scrittura di un video. Per ogni fotogramma che ricevo dalla fotocamera, utilizzo "AppendPixelBuffer" per scrivere il fotogramma sul video e quindi

Grazie per qualsiasi aiuto. Il risultato finale è che voglio un rapporto 1: 1 di frame nel video rispetto a righe nel file CSV. Ho confermato che sto scrivendo correttamente il file CSV usando vari contatori ecc. Quindi il mio problema è chiaramente la comprensione del formato del film o dell'API.

Grazie per qualsiasi aiuto.

risposte:

0 per risposta № 1

AGGIORNATO Assomiglia al tuo ffmpeg l'estrattore è sbagliato. Per estrarre solo i frame con timestamp (e non i frame campionati a 24Hz) nel tuo file, prova questo:

ffmpeg -i video.mov  -r 1/1 image-%03d.jpeg

Questo mi dà i 20 frame previsti.

VECCHIA RISPOSTA

ffprobe segnala che il tuo video ha una frequenza dei fotogrammi di 2,19 fotogrammi / se una durata di 17 secondi, che fornisce 2,19 * 17 = 37 fotogrammi, che è più vicino ai tuoi 15-20 previsti rispetto ai 400 di ffmpeg.

Quindi forse l'estrattore di ffmpeg è in errore?

Difficile dirlo se non mostri come codificare e decodificare il file.