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

Corte parte do ficheiro de vídeo da posição inicial para a posição final com FFmpeg

Tenho um ficheiro de vídeo de 30 minutos, mas quero extrair um vídeo de 00:09:23 para 00:25:33.

Posso definir a posição inicial com -ss, mas não consegui encontrar uma para a posição final. Alguma ajuda, por favor?

Respostas (6)

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

Instale ffmpeg

Certifique-se que baixe uma versão recente de ffmpeg , e não use a que vem com a sua distribuição (por exemplo, Ubuntu). As versões empacotadas de várias distribuições estão frequentemente desactualizadas e não se comportam como esperado.

Ou compile-o você mesmo .

Como cortar um vídeo, sem recodificar

Use isto para cortar vídeo de [start] para [duration]:

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

Aqui, as opções significam o seguinte:

  • -ss especifica a hora de início, e. g. 00:01:23.000 ou 83 (em segundos)
  • -t especifica a duração do clipe (mesmo formato).
  • Recente ffmpeg também tem uma bandeira para fornecer a hora final com -to .
  • -c copy copia o primeiro bitstream de vídeo, áudio e subtítulo da entrada para o ficheiro de saída sem os recodificar. Isto não vai prejudicar a qualidade e fazer o comando correr em segundos.

Como cortar um vídeo, com recodificação

Se deixar de fora a opção -c copy, ffmpeg irá automaticamente recodificar o vídeo e áudio de saída de acordo com o formato que escolheu. Para vídeo e áudio de alta qualidade, leia o x264 Encoding Guide e o AAC Encoding Guide , respectivamente.

Por exemplo:

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 que pode usar o seguinte comando agora.

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

Veja também ffmpeg Doc , ou esta página wiki .

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

É estranho que ninguém tenha sugerido o trim filtro .

Largue tudo, excepto o segundo minuto de entrada:

ffmpeg -i INPUT -vf trim=60:120

Guarde apenas o primeiro segundo:

ffmpeg -i INPUT -vf trim=duration=1

Largue tudo, excepto o segundo 13 para o segundo 58:

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

Pode utilizar estes dois métodos que funcionam para Windows e Linux.

Existem duas formas de dividir ficheiros de vídeo por ffmpeg. A primeira é boa em si mesma, mais do que isso - é mais rápida, mas por vezes cria ficheiros de saída com certas falhas. Assim para esses casos existe a segunda forma de dividir ficheiros de vídeo: é consideravelmente mais lento, os ficheiros de saída são maiores, mas parece que são sempre do mesmo nível de qualidade dos ficheiros de entrada utilizados.

Way 1:

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

Way 2:

ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
  • <start> - o início da parte de um ffmpeg de vídeo é para cortar. Formato: 00:00:00.0000, que significa horas:minutos:segundos:milissegundos.

  • <duration> - a duração da parte de um vídeo ffmpeg é para recortar. O mesmo formato que acima.

Exemplos:

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 corta uma parte do ficheiro de vídeo a partir de 1 hora 19 minutos 0 segundos. A duração do corte da sequência de vídeo é de 5 minutos 0 segundos.

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

Pode utilizar este

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

Aqui tem de dar duração de vídeo. ou seja, 00:25:33-00:09:23

-2
-2
-2
2012-01-11 18:27:11 +0000

Utilizo a seguinte sintaxe para cortar vídeo com ffmpef:

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

-t é utilizado para definir a duração em segundos - não é possível especificar o tempo final, mas isto deve funcionar para si.