531 votes

Utilisation de ffmpeg pour découper une vidéo

J'utilise ffmpeg pour découper une section d'un grand fichier comme celui-ci :

ffmpeg -i input.wmv -ss 60 -t 60 -acodec copy -vcodec copy output.wmv

Le site -ss fonctionne bien mais la partie -t est ignorée. Il supprime correctement les secondes initiales spécifiées avec -ss mais continue ensuite à aller jusqu'à la fin de l'entrée avec la copie.

Y a-t-il un moyen d'utiliser ffmpeg pour couper la fin d'une vidéo sans la recoder ?

8voto

Ben Points 81

Pour moi -t n'a pas fonctionné, mais -vframes travaillé. Je préfère utiliser #frames puisque je préfère couper aux I-Frames et que j'ai découvert que la GOP pour la vidéo utilisait ffprobe .

La ligne de commande qui a fonctionné pour moi est :

ffmpeg -ss 60s -i input.wmv -vframes 1800 -acodec copy -vcodec copy output.wmv

Au fait, mettre -ss à l'avant de -i fait une grande différence dans le temps d'exécution.

2 votes

En fait, -vframes (ou -frames:v ) devrait venir après -i parce que c'est une option de sortie.

5voto

VectorVortec Points 181

Comme pour user225366, l'option -t ne fonctionne pas pour les vidéos courtes, mais elle fonctionne pour les vidéos plus longues. Pour les vidéos courtes, il semble que l'option -frames:v soit meilleure. C'est ce qui a fonctionné pour moi.

ffmpeg -ss 4 -i input.mp4 -frames:v 200 -vcodec copy output.mp4

-acodec copy doit être ajouté si la vidéo a de l'audio, comme le montrent les autres réponses.

4voto

Gruber Points 367

Je vois que peu de gens mentionnent ce point (je ne suis pas un expert donc il y a peut-être un piège), mais si votre fichier a d'autres flux comme des sous-titres et d'autres métadonnées comme des chapitres et ainsi de suite, il est possible de couper/tailler et de garder tous les flux avec la commande suivante

ffmpeg -to 60 -i input.mkv -map 0 -c copy output.mkv

Avec -map 0 vous prenez tous les flux dans le dossier, et avec -c copy vous les copiez tous tels quels.
Utilisation de -to en omettant le début par -ss coupera la vidéo d'entrée du début à la seconde 60.

En jouant avec map est également utile si vous souhaitez que seuls certains flux spécifiques soient conservés dans le montage (vous n'avez peut-être pas besoin de toutes les sources audio dans le fichier, ou seulement de certains sous-titres).

Je l'utilise lorsque j'ai besoin de diviser de gros fichiers MKV qui ne peuvent pas être stockés dans une mémoire FAT32.

0 votes

J'ai ajouté une heure de début et une heure de fin, et cela semble bien fonctionner : ffmpeg -ss 18:50 -to 35:35 -i in.mp4" -map 0 -c copy out.mp4"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X