Comment contrôler key-frame génération de ffmpeg?

Je suis en train de faire un segmenter qui interviennent ffmpeg write_frame fonction et écrire des données de sortie des fichiers séparés. Chaque segmenté fichier contient un segment d'environ 3 secondes de la vidéo.

Fait le code suivant:

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

D'une manière générale, chaque segment contient au moins 3 secondes données vidéo, et il commence avec une image clé.

Le problème est que la sortie vidéo de la durée sont très différents, certains contiennent de 3 secondes, 5 ou 6.

Je soupçonne que le problème est dû à la façon dont ffmpeg générer des images clés lors du transcodage. Si la "distance" entre deux images clés sont 6s, j'ai eu 6 secondes segment.

Voici mes questions:

  1. est-ce vrai que ffmpeg générer des images clés à intervalles irréguliers (et l'intervalle de temps peut être de quelques secondes (par exemple. 6)?
  2. Comment pouvons-nous contrôler le ffmpeg image clé de la génération? (je suppose qu'il doit y avoir un ffmpeg commande de l'argument pour cela, -force_key_frames peut-être, mais je ne suis pas sûr)
Salut jAckOdE, avez-vous résolu ce problème? Je suis confronté à ce même problème aujourd'hui.
Il a été quelques années auparavant, je ne me souviens pas exactement ce que j'avais fait. Mais l'idée est de jouer avec un forçage image clé pour être généré à certain intervalle (merci google pour -force_key_frame) FFmpeg ont peut-être changé depuis, alors vous êtes mieux de se référer à la plus récente du document. Espérons qu'il aidera
Ok je vais vérifier, grâce jAckOdE

OriginalL'auteur jAckOdE | 2013-01-02