Je crée un segment qui intervient dans la fonction write_frame de ffmpeg et écrit les données de sortie dans des fichiers séparés. Chaque fichier segmenté contient un segment d'environ 3 secondes de vidéo.Comment contrôler la génération d'images-clés de ffmpeg?
Le code ne suit:
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
parlant général, chaque segment contient au moins 3 secondes de données vidéo, et il commence par une image clé.
Le problème est que la durée de sortie vidéo sont très différents, certains contiennent 3 secondes, certains contiennent 5 ou 6.
Je soupçonne que le problème en raison de la façon dont ffmpeg génèrent des images clés au cours de transcoder. Si la "distance" entre deux images clés adjacentes est 6s, j'ai un segment de 6 secondes.
Voici mes questions:
est-ce vrai que ffmpeg générer des images clés à des intervalles irréguliers (et l'intervalle de temps peut être jusqu'à quelques secondes (par exemple 6)
Comment pouvons-nous.? contrôler la génération d'images clés ffmpeg? (je suppose qu'il devrait y avoir l'argument d'une commande ffmpeg pour cela, peut-être -force_key_frames, mais je ne suis pas sûr)
Salut jAckOdE, avez-vous résolu ce problème? Je suis confronté à la même question maintenant. –
Il y a quelques années, je ne me rappelle plus exactement ce que j'avais fait. Mais l'idée est de jouer avec le forçage de l'image clé à générer à un certain intervalle (s'il vous plaît google pour -force_key_frame) FFmpeg peut avoir changé depuis lors, vous feriez mieux de consulter le dernier document. J'espère que cela aidera – jAckOdE
Ok, je vais vérifier, merci jAckOdE –