Couper les vidéos en fonction du temps de début et de fin en utilisant ffmpeg

j'ai essayé de couper la vidéo en utilisant l'Heure de début et de fin de la vidéo en utilisant la commande suivante

ffmpeg -ss 00:00:03 -t 00:00:08 -i movie.mp4 -acodec copy -vcodec copy -async 1 cut.mp4

en utilisant la commande ci-dessus, je veux couper la vidéo de 00:00:03 à 00:00:08 . Mais ce n'est pas couper la vidéo entre ces moments au lieu de cela qu'il coupe la vidéo avec les 11 premières secondes. quelqu'un peut m'aider comment résoudre ce problème?

Edit 1:

j'ai essayé pour couper en utilisant la commande suivante qui est suggérée par mark4o

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4

Mais il a été montré l'erreur suivante.

l'encodeur "aac" est expérimental mais les codecs expérimentaux ne sont pas activés

donc j'ai ajouté le -strict -2 dans la commande i.e.,

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 -strict -2 cut.mp4

Maintenant, il fonctionne très bien.

300
demandé sur Community 2013-08-26 16:34:19

4 réponses

vous n'avez probablement pas d'image clé à la marque de 3 secondes. Parce que les images non-clés encodent des 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 à une image non-clé sans ré-encoder en utilisant une liste d'édition. En d'autres termes, si l'image clé la plus proche avant 3s est à 0s, alors il va copier la vidéo à partir de 0s et utiliser une liste d'édition pour dire au lecteur de commencer à jouer 3 secondes dans.

si vous utilisez le dernier ffmpeg de Git master, il le fera en utilisant une liste d'édition lorsqu'il est invoqué en utilisant la commande que vous avez fournie. Si cela ne fonctionne pas pour vous, alors vous utilisez probablement une ancienne version de ffmpeg, ou votre lecteur ne supporte pas les listes d'édition. Certains lecteurs ignoreront la liste d'édition et joueront toujours tous les médias du fichier du début à la fin.

si vous voulez couper précisément à partir d'une image non-clé et que vous voulez qu'elle soit jouée à partir du point désiré sur un lecteur qui ne supporte pas les listes d'édition, ou que vous vouliez vous assurer que la partie coupée ne soit pas réellement dans le fichier de sortie (par exemple si elle contient des informations confidentielles), alors vous pouvez le faire en ré-encodant de sorte qu'il y ait une image-clé précisément à l'Heure de départ souhaitée. Le réencodage 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 inclure d'autres options liées à la qualité ou un encodeur AAC particulier. Pour plus de détails, voir x264 Encoding Guide de ffmpeg pour la vidéo et AAC Encoding Guide pour l'audio.

aussi, l'option -t spécifie une durée, pas une heure de fin. La commande ci-dessus encodera 8s de vidéo à partir de 3s. Pour commencer à 3s et finir à 8s utilisez -t 5 . Si vous utilisez une version actuelle de ffmpeg vous pouvez remplacer également -t par -to dans la commande ci-dessus pour terminer à l'heure spécifiée.

366
répondu mark4o 2014-07-22 00:51:28

essayez ceci. Il est le plus rapide et le meilleur ffmpeg-voie que j'ai comprendre:

 ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output.mp4

cette commande brouille votre vidéo en quelques secondes!

Je l'ai expliqué sur mon blog ici :

-je: Cette spécifie le fichier d'entrée. Dans ce cas, c'est (input.mp4).

-ss: utilisé avec -je l'ai, celle-ci cherche dans le fichier d'entrée (input.mp4) à la position.

00:01:00: C'est l'heure à laquelle votre vidéo taillée commencera.

-pour: spécifie la durée (00:01:40) à la fin (00:02:12).

00:02:00: C'est le moment où votre vidéo taillée se terminera.

-c copie: C'est une option à garniture via stream copy. (NB: très rapide)

le format de synchronisation est: hh: mm: ss

veuillez noter que la réponse actuelle, fortement révisée, est périmée et que la trim serait extrêmement lente. Pour plus d'informations, consultez cet article officiel de ffmpeg "1519440920 .

118
répondu George Chalhoub 2017-07-26 18:48:33
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 -c copy cut.mp4 

Utiliser -c "copie de 151930920" pour faire dans l'instant. Dans ce cas, ffmpeg ne ré-encodera pas la vidéo, juste coupera en fonction de la taille.

69
répondu Vlad Hudnitsky 2016-10-25 15:42:00
    ffmpeg -i movie.mp4 -vf trim=3:8 cut.mp4

tout laisser tomber sauf de la deuxième 3 à la deuxième 8.

25
répondu JFMD 2015-02-23 22:31:41