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

83

Si j'ai une vidéo, normalement au format avi, mais que je pourrais en créer une et que je souhaite en créer une autre dans le même format mais avec une partie seulement, la position i secondes à f secondes dans la vidéo, quelle est la commande à une ligne à faire cette?

Strapakowsky
la source

Réponses:

116

Cela peut être fait en utilisant mencoderet ffmpeg.

mencoder

Dites que vous souhaitez couper une partie de 5 secondes dans le fichier d'origine à partir de 00:00:30 et qu'elle ne doit pas être ré-encodée (si vous souhaitez la ré-encoder, vous devrez le remplacer copypar du son. et codecs vidéo, pour obtenir une liste des problèmes de codecs audio disponibles mencoder -oac help, pour obtenir une liste des problèmes de codecs vidéo disponibles mencoder -ovc help), vous devez émettre:

mencoder -ss 00:30:00 -endpos 00:00:05 -oac copy -ovc copy originalfile -o newfile

Vous devrez remplacer orginalfileet newfilepar les noms de fichiers réels, le dernier est le nom du fichier créé pour contenir la partie découpée.

ffmpeg

Dites que vous souhaitez couper une partie de 5 secondes dans le fichier d'origine à partir de 00:00:30 et qu'elle ne doit pas être ré-encodée (si vous souhaitez la ré-encoder, vous devrez le remplacer. copyavec les codecs audio et vidéo, pour obtenir une liste des problèmes de codecs disponibles ffmpeg -formats -E), vous devez ensuite émettre:

ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile

Vous devrez remplacer orginalfileet newfilepar les noms de fichiers réels, le dernier est le nom du fichier créé pour contenir la partie découpée.


Pour référence, voir http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html et "7. Copier uniquement une partie de la vidéo" dans http: // segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/

NN
la source
J'ai essayé et j'ai échoué. Pouvez-vous me montrer ce que la commande serait pour vous avec vos codecs typiques à utiliser pour avi, flv et mpg? J'ai énuméré les codecs, mais je ne pouvais pas en comprendre le sens.
Strapakowsky
@strapakowsky Cela dépend du fichier d'entrée et des codecs que vous avez installés. Vous devriez peut-être poser une nouvelle question à ce sujet et ajouter des informations sur le fichier que vous avez et la commande que vous avez essayée.
NN
@strapakowsky Je ne peux pas le faire fonctionner avec ffmpeg non plus, mais tous les guides sur la découpe de pièces avec ffmpeg suggèrent qu'il devrait fonctionner d'une manière ou d'une autre, donc je le garde dans ma réponse. Cependant, j'ai également ajouté une ligne mencoder qui me permet de travailler.
NN
Je viens d'utiliser une version de cela. Cela ne fonctionne pas pour vous car -ss ... -t ...doit être avant l' -i infileoption. Voir cette réponse pour le vrai one-liner. Vous avez presque compris, mais pas l'ordre ...
Hendy
1
@Hendy édité en conséquence
NN
25

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

Synopsis: ffmpeg -i [fichier_entrée] -ss [secondes_départ] -t [durée_secondes] [fichier_sortie]

utiliser FFmpeg couper la vidéo mp4 sans ré-encodage

Example:
ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4

utiliser FFmpeg couper la vidéo MP4 avec réencodage

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

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

Ben Wong
la source
0

medipack est une application de ligne de commande très simple à utiliserffmpeg .

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 afficher les options de la sous-commande trim en tant que:

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

positional arguments:
  inp                   input video file ex: input.mp4

optional arguments:
  -h, --help            show this help message and exit
  -s START, --start START
                        start time for cuting in format hh:mm:ss or mm:ss
  -e END, --end END     end time for cuting in format hh:mm:ss or mm:ss
  -t TIME, --time TIME  clip duration in format hh:mm:ss or mm:ss
  -o OUTPUT, --output OUTPUT

vous pouvez é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            show this help message and exit
  -v, --version         Display version number

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

srbcheema1
la source
-1

Pour être plus précis, vous pouvez: MANUELLEMENT ouvrir le fichier dans un lecteur multimédia qui avance image par image (le joueur préféré est 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 d’heure EXACT:

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

et

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

Si vous souhaitez vous joindre, créez un fichier txt avec les fichiers vidéo avec un contenu tel que:

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

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

Run ffmpeg:

ffmpeg -f concat -i FileList.txt -c copy "Path\NewName_joined.flv"

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

Budman1
la source