Vous n'avez probablement pas d'image clé à la marque des 3 secondes. Étant donné que les images non clés codent les différences par rapport aux autres images, elles nécessitent toutes les données à partir de l'image clé précédente.
Avec le conteneur mp4, il est possible de couper sur une image non clé sans ré-encodage à l'aide d'une liste d'édition. En d'autres termes, si l'image clé la plus proche avant 3 s est à 0, elle copiera la vidéo à partir de 0 et utilisera une liste d'édition pour dire au lecteur de commencer à jouer 3 secondes.
Si vous utilisez la dernière ffmpeg de git master, elle le fera à l'aide d'une liste d'édition lorsqu'elle sera invoquée à l'aide de la commande que vous avez fournie. Si cela ne fonctionne pas pour vous, vous utilisez probablement une ancienne version de ffmpeg ou votre lecteur ne prend pas en charge les listes de modifications. Certains joueurs ignoreront la liste d'édition et liront toujours tous les médias du fichier du début à la fin.
Si vous souhaitez couper précisément à partir d'une image non clé et que vous souhaitez qu'il démarre à partir du point souhaité sur un lecteur qui ne prend pas en charge les listes d'édition, ou si vous voulez vous assurer que la partie coupée ne se trouve pas réellement dans le fichier de sortie (par exemple s'il contient des informations confidentielles), vous pouvez le faire en recodant afin qu'il y ait une image clé précisément à l'heure de début souhaitée. Le recodage est la valeur par défaut si vous ne spécifiez pas copy
. Par exemple:
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4
Lors du réencodage, vous pouvez également souhaiter inclure des options supplémentaires liées à la qualité ou un encodeur AAC particulier. Pour plus de détails, consultez le Guide d'encodage x264 de ffmpeg pour la vidéo et le Guide d'encodage AAC pour l'audio.
En outre, l' -t
option spécifie une durée, pas une heure de fin. La commande ci-dessus encodera 8 secondes de vidéo à partir de 3 secondes. Pour commencer à 3 s et terminer à 8 s, utilisez -t 5
. Si vous utilisez une version actuelle de ffmpeg, vous pouvez également remplacer -t
par -to
dans la commande ci-dessus pour terminer à l'heure spécifiée.