2012-01-11 17:59:52 +0000 2012-01-11 17:59:52 +0000
151
151

Tagliare parte del file video dalla posizione iniziale alla posizione finale con FFmpeg

Ho un file video di 30 minuti, ma voglio estrarre un video da 00:09:23 a 00:25:33.

Posso definire la posizione iniziale con -ss, ma non sono riuscito a trovarne una per la posizione finale. Qualche aiuto, per favore?

Risposte (6)

255
255
255
2012-01-11 21:02:37 +0000

Installare ffmpeg

Assicuratevi di scaricare una versione recente di ffmpeg , e non usate quella fornita con la vostra distribuzione (ad esempio Ubuntu). Le versioni confezionate di varie distribuzioni sono spesso obsolete e non si comportano come previsto.

Oppure compilalo tu stesso .

Come tagliare un video, senza ricodificare

Usate questo per tagliare il video da [start] per [duration]:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4

Qui le opzioni significano quanto segue:

  • -ss specifica l'ora di inizio, e. g. 00:01:23.000 o 83 (in secondi)
  • -t specifica la durata della clip (stesso formato).
  • Il recente ffmpeg ha anche un flag per fornire l'ora di fine con -to .
  • -c copy copia il primo bitstream video, audio e sottotitoli dall'ingresso al file di uscita senza ricodificarli. Questo non danneggerà la qualità e farà girare il comando in pochi secondi.

Come tagliare un video, con ricodifica

Se si tralascia l'opzione -c copy, ffmpeg ricodificherà automaticamente il video e l'audio in uscita secondo il formato scelto. Per video e audio di alta qualità, leggere la x264 Encoding Guide e la AAC Encoding Guide , rispettivamente.

Ad esempio:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4
31
31
31
2015-05-07 02:30:48 +0000

Penso che ora si possa usare il seguente comando.

ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile

Date un'occhiata anche ffmpeg Doc , oppure questa pagina wiki .

15
15
15
2015-04-07 15:10:38 +0000

Questo è strano che nessuno ha suggerito il trim filtro .

Lascia tutto tranne il secondo minuto di ingresso:

ffmpeg -i INPUT -vf trim=60:120

Conservare solo il primo secondo:

ffmpeg -i INPUT -vf trim=duration=1

Lascia tutto tranne il secondo 13 al secondo 58:

ffmpeg -i INPUT -vf trim=13:58 OUTPUT
6
6
6
2013-10-03 19:08:40 +0000

Si possono usare questi due metodi che funzionano per Windows e Linux.

Ci sono due modi per dividere i file video con ffmpeg. Il primo è buono di per sé, più di questo - è più veloce, ma a volte crea file di output con certi difetti. Quindi per questi casi c'è il secondo modo di dividere i file video: è considerevolmente più lento, i file di output sono più grandi, ma sembra che siano sempre dello stesso livello qualitativo dei file di input usati.

Via 1:

ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi

Via 2:

ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
  • <start> - l'inizio della parte di un ffmpeg video è di tagliare. Formato: 00:00:00.0000, che significa ore:minuti:secondi:millisecondi.

  • <duration> - la durata della parte di un video ffmpeg è da ritagliare. Stesso formato come sopra.

Esempi:

ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi

ffmpeg ritaglia una parte del file video a partire da 1 ora e 19 minuti 0 secondi. La durata del taglio della sequenza video è di 5 minuti 0 secondi.

-1
-1
-1
2012-01-11 18:29:57 +0000

Potete usare questo

ffmpeg -sameq -ss clip_start -t duration -i original.ogg clip.ogg
``` &001 


Qui dovete dare la durata del video. cioè. 00:25:33-00:09:23
-2
-2
-2
2012-01-11 18:27:11 +0000

Uso la seguente sintassi per tagliare il video con ffmpef:

ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]

-t è usato per impostare la durata in secondi - non è possibile specificare il tempo di fine ma questo dovrebbe funzionare per voi.