Je voulais définir l'intervalle d'images clés d'une vidéo d'entrée sur 5 secondes. Ce n'est qu'alors que je peux obtenir une segmentation HLS constante de 5 secondes en utilisant FFmpeg. Comment définir l'intervalle d'images clés à 5 secondes à l'aide de FFmpeg? (Code de ligne d'invite FFmpeg apprécié)
Vous devrez recoder. Réglez le paramètre keyint de x264 sur 5 * fps et désactivez Scenecut. Si votre fps est de 24 par exemple:
ffmpeg -i <input> -vcodec libx264 -x264-params keyint=120:scenecut=0 -acodec copy out.mp4
Ce n'est évidemment pas optimal pour la qualité mais cela correspondra à votre demande.
Modifié pour changer no-scenecut
à scenecut=0
, selon la suggestion du soupirant.
Soupir.
La désinformation concernant le no-scenecut
L'option dure depuis plus longtemps que je ne me souvienne. N'entrez jamais de valeur pour no-scenecut
.
Un lien vers la documentation peut être trouvé ici .
Pour FFmpeg, vous devez utiliser les deux commutateurs suivants:
-g 120
définira un GOP de 120 images pour créer un GOP de cinq secondes pour un contenu à 23,976 ips. Cela fonctionne en conjonction avec le no-scenecut
option.
-x264opts no-scenecut
forcera la création d'images clés selon la valeur GOP utilisée par FFmpeg. La valeur par défaut pour libx264
consiste à créer une image clé lorsqu'il détecte un changement de scène. Si vous inspectez un fichier de sortie à l'aide de MediInfo sans cette option, vous verrez scenecut=40
. Une fois fait correctement, ce sera scenecut=0
. Si cette option n'est pas utilisée, les images clés seront mal alignées pour le contenu ABR et la taille des segments sera imprévisible.
Ne prenez pas mon Word pour cela, veuillez exécuter ce qui suit sous un shell bash où $ inputfile est le nom du fichier que vous souhaitez analyser. Si vous utilisez les deux commutateurs illustrés ci-dessus, vous verrez une cadence très uniforme d'images clés transférées vers l'invite de commande.
ffprobe -select_streams v -show_frames -show_entries \
frame=pict_type -of csv $inputfile | grep -n I | cut -d ':' -f 1
Vous pouvez également faire référence à un article que j'ai écrit sur la façon de créer un contenu aligné sur un cadre ABR ici .