122 votes

Extraire une partie d'une vidéo avec une commande en une seule ligne

Si j'ai une vidéo, normalement de format avi, mais pourrait être n'importe lequel, et que je veux en créer une autre dans le même format mais juste une partie, de la position i secondes à f secondes dans la vidéo, quelle est la commande en une ligne pour le faire ?

158voto

John Points 1654

Cela peut être fait en utilisant mencoder ou ffmpeg.

mencoder

Disons que vous voulez découper une partie commençant à 00:00:30 dans le fichier original avec une durée de 5 secondes et qu'elle ne doit pas être réencodée (si vous souhaitez la réencoder, vous devrez remplacer copy par les codecs audio et vidéo, pour une liste des codecs audio disponibles, entrez mencoder -oac help, pour une liste des codecs vidéo disponibles, entrez mencoder -ovc help), alors vous entrez :

mencoder -ss 00:30:00 -endpos 00:00:05 -oac pcm -ovc copy fichieroriginal -o nouveaufichier

Vous devrez remplacer fichieroriginal et nouveaufichier par les noms de fichiers réels, ce dernier est le nom du fichier qui est créé pour contenir la partie découpée.

ffmpeg

Disons que vous voulez découper une partie commençant à 00:00:30 dans le fichier original avec une durée de 5 secondes et qu'elle ne doit pas être réencodée (si vous souhaitez la réencoder, vous devrez remplacer copy par les codecs audio et vidéo, pour une liste des codecs disponibles, entrez ffmpeg -formats -E), alors vous entrez :

ffmpeg -ss 00:00:30 -i fichieroriginal -t 00:00:05 -vcodec copy -acodec copy nouveaufichier

Vous devrez remplacer fichieroriginal et nouveaufichier par les noms de fichiers réels, ce dernier est le nom du fichier qui est créé pour contenir la partie découpée.


Pour plus de références, consultez <a href="http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html" rel="noreferrer">http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html</a> et "7. Copier seulement une partie de la vidéo" dans <a href="http://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/" rel="noreferrer">http://segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/</a>

40voto

Ben Wong Points 509

Avez-vous besoin de couper la vidéo en mode réencodage ou sans mode réencodage? Vous pouvez essayer la commande suivante ci-dessous.

Synopsis: ffmpeg -i [fichier_entrée] -ss [début_secondes] -t [durée_secondes] [fichier_sortie]

utiliser FFmpeg pour couper une vidéo mp4 sans réencodage

Exemple:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy couper_video.mp4

utiliser FFmpeg pour couper une vidéo mp4 avec réencodage

Exemple:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -async 1 -strict -2 couper_video.mp4

Si vous voulez couper une section depuis le début, il suffit de supprimer -t 00:00:10 de la commande

0voto

srbcheema1 Points 101

medipack est une application en ligne de commande très simple en tant qu'enveloppe sur ffmpeg.

vous pouvez découper votre vidéo en utilisant ces commandes:

medipack trim input.mp4 -s 01:04 -e 14:08 -o output.mp4
medipack trim input.mp4 -s 01:04 -t 13:04 -o output.mp4

vous pouvez voir les options de la sous-commande de découpe comme suit:

srb@srb-pc:$ medipack trim -h
usage: medipack trim [-h] [-s START] [-e END | -t TIME] [-o OUTPUT] [inp]

positional arguments:
  inp                   fichier vidéo d'entrée ex: input.mp4

optional arguments:
  -h, --help            afficher ce message d'aide et quitter
  -s START, --start START
                        heure de début pour la découpe au format hh:mm:ss ou mm:ss
  -e END, --end END     heure de fin pour la découpe au format hh:mm:ss ou mm:ss
  -t TIME, --time TIME  durée du clip au format hh:mm:ss ou mm:ss
  -o OUTPUT, --output OUTPUT

vous pourriez également explorer d'autres options en utilisant medipack -h

srb@srb-pc:$ medipack --help
usage: medipack.py [-h] [-v] {trim,crop,resize,extract} ...

positional arguments:
  {trim,crop,resize,extract}

optional arguments:
  -h, --help            afficher ce message d'aide et quitter
  -v, --version         afficher le numéro de version

vous pouvez visiter https://github.com/srbcheema1/medipack et consulter des exemples dans README.

-1voto

Budman1 Points 1

Pour être plus précis, vous pouvez : MANUELLEMENT Ouvrir le fichier dans un lecteur multimédia qui avancera image par image (potplayer mon préféré mais MPC-HC fonctionne) et lire un fichier AVISynth avec des données telles que :

DirectShowSource(("C:\Downloads\Video\Do you want him.flv"), Pixel_Type="yuy2").Crop(0,0,-0,-0)
Subtitle("C:\Downloads\Video\Do you want him.flv", font="Arial", size=24, text_color=$ff0000, align=3)
ShowFrameNumber(scroll=true, x=336, y=27, font="Arial", size=24, text_color=$ff0000)

ShowTime(x=398, y=44, font="Arial", size=24, text_color=$ff0000)

Ensuite, coupez avec le format de temps EXACT :

ffmpeg -i "Chemin\do you want him.flv" -ss 00:00:05.240 -to 00:00:08.360 -vcodec libx264 -acodec libvo_aacenc "Chemin\Do you want him1.flv"

et

ffmpeg -i "Chemin\do you want him.flv" -ss 00:00:10.240 -to 00:00:14.360 -vcodec libx264 -acodec libvo_aacenc "Chemin\Do you want him2.flv"

Si vous souhaitez joindre, créez un fichier txt avec les fichiers vidéo avec des contenus comme suit :

file 'C:\Downloads\Video\Do you want him1.flv'

file 'C:\Downloads\Video\Do you want him2.flv'

Exécutez ffmpeg :

ffmpeg -f concat -i FileList.txt -c copy "Chemin\NouveauNom_joint.flv"

PROGRAMMATIQUEMENT J'ai écrit un programme mais je n'ai pas le niveau 10 pour le montrer, désolé

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