Estrai parte di un video con un comando di una riga


81

Se ho un video, normalmente avi, ma potrebbe essere qualsiasi, e voglio crearne un altro nello stesso formato ma solo una parte, la posizione da i secondi a f secondi nel video, qual è il comando di una riga da fare Questo?

Risposte:


114

Questo può essere fatto usando mencodere ffmpeg.

mencoder

Supponi di voler ritagliare una parte che inizia alle 00:00:30 nel file originale con una durata di 5 secondi e che non deve essere ricodificata (se desideri ricodificarlo, dovrai sostituirlo copycon l'audio e codec video, per un elenco di problemi di codec audio disponibili mencoder -oac help, per un elenco di problemi di codec video disponibili mencoder -ovc help), quindi emetti:

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

Dovrai sostituire orginalfilee newfilecon i nomi dei file effettivi, il successivo è il nome del file creato per contenere la parte ritagliata.

ffmpeg

Supponi di voler ritagliare una parte che inizia alle 00:00:30 nel file originale con una durata di 5 secondi e che non dovrebbe essere ricodificato (se vuoi ricodificarlo, dovrai sostituirlo copycon codec audio e video, per un elenco dei problemi di codec disponibili ffmpeg -formats -E), quindi emetti:

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

Dovrai sostituire orginalfilee newfilecon i nomi dei file effettivi, il successivo è il nome del file creato per contenere la parte ritagliata.


Per riferimento consultare http://lazyxiong-tech.blogspot.com/2007/05/using-mencoder-to-cut-out-pieces-of.html e "7. Copia solo una parte del video" in http: // segfault.in/2010/10/ffmpeg-tricks-you-should-know-about/


L'ho provato e non ci sono riuscito. Puoi mostrarmi quale sarebbe il comando per te con i tuoi codec tipici da usare per avi, flv e mpg? Ho elencato i codec ma non ho avuto molto senso.
Strapakowsky,

@strapakowsky Dipende dal file di input e dai codec installati. Forse dovresti fare una nuova domanda per questo e aggiungere informazioni su quale file hai e quale comando hai provato.
NN,

@strapakowsky Non riesco nemmeno a farlo funzionare con ffmpeg, ma tutte le guide su come tagliare parti con ffmpeg suggeriscono che dovrebbe funzionare in qualche modo, quindi lo mantengo nella mia risposta. Tuttavia, ho anche aggiunto una linea mencoder che mi mette al lavoro.
NN,

Ho appena usato una versione di questo. Non funziona per voi, perché -ss ... -t ...ha bisogno di essere prima che l' -i infileopzione. Vedi questa risposta per il vero one-liner. Hai quasi capito, ma non l'ordine ...
Hendy,

1
@Hendy Modificato di conseguenza
NN il

25

Devi tagliare video con ricodifica o senza modalità di ricodifica? Puoi provare a seguire il comando seguente.

Sinossi: ffmpeg -i [input_file] -ss [start_seconds] -t [duration_seconds] [output_file]

usa FFmpeg tagliare video mp4 senza ricodificare

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

usa FFmpeg tagliare video mp4 con ricodifica

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

Se si desidera tagliare la sezione dall'inizio, è sufficiente abbandonare -t 00:00:10il comando


0

medipack è un'app molto semplice da riga di comando come wrapper ffmpeg.

puoi ottenere il taglio del tuo video usando questi comandi:

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

è possibile visualizzare le opzioni del sottocomando trim come:

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

puoi anche esplorare altre opzioni usando 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

puoi visitare https://github.com/srbcheema1/medipack e esempi di checkout in README.


-1

Per essere più precisi è possibile: MANUALMENTE Aprire il file in un lettore multimediale che inquadrerà per fotogramma in avanti (potplayer il mio preferito ma MPC-HC funziona) e riprodurre un file AVISynth con dati come:

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)

Quindi tagliare con il formato ora ESATTO:

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"

e

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"

Se desideri unirti, crea un file txt con i file video con contenuti come:

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

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

Esegui ffmpeg:

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

PROGRAMMATAMENTE Ho scritto un programma ma non ho un livello 10 per mostrarlo, scusa

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.