Sto creando un segmenter che interviene nella funzione write_frame di ffmpeg e scrive i dati di output in file separati. Ogni file segmentato contiene segmenti di video di circa 3 secondi.Come controllare la generazione dei fotogrammi chiave di ffmpeg?
Il codice non seguente:
1 - Get transcoded packet
2 - Check if it contains key frame data, if yes goto 3.
3 - Check the duration of current segment, if it exceed 3 seconds, goto 4
4 - Close file, and create new segment, write packet to segment file, goto-1
parlare in generale, ogni segmento contiene almeno 3 secondi dati video, e comincia con un fotogramma chiave.
Il problema è che la durata del video in uscita sono molto diversi, alcuni contengono 3 secondi, alcuni contengono 5 o 6.
Ho il sospetto che il problema a causa di come ffmpeg generare fotogrammi chiave durante la transcodifica. Se la "distanza" tra due fotogrammi chiave adiacenti è 6s, ho un segmento di 6 secondi.
Ecco le mie domande:
è che vero che ffmpeg generare fotogrammi chiave a intervalli irregolari (e l'intervallo di tempo può essere fino a pochi secondi (ad esempio 6)
Come possiamo.? controllare la generazione fotogramma chiave ffmpeg? (credo ci dovrebbe essere l'argomento di un comando ffmpeg per questo, -force_key_frames forse, ma non sono sicuro)
Ciao jAckOdE, hai risolto questo problema? Sto affrontando questo stesso problema ora. –
È stato qualche anno fa, non riesco a ricordare cosa esattamente avevo fatto. Ma l'idea è di giocare con la forzatura del fotogramma chiave da generare a determinati intervalli (per favore google for -force_key_frame) FFmpeg potrebbe essere cambiato da allora è meglio fare riferimento all'ultimo documento. Spero che aiuti – jAckOdE
Ok controllerò, grazie jAckOdE –