Como cortar um vídeo com ffmpeg?


172

Eu tenho um arquivo MP4 de uma gravação de tela que preciso cortar. Como fazer isso sem usar ferramentas caras como Adobe Premier ou Final Cut? Prefiro ffmpegporque já o usei antes.

Respostas:


264

Use o cropfiltro :

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

Onde as opções são as seguintes:

  • out_w é a largura do retângulo de saída
  • out_h é a altura do retângulo de saída
  • xe yespecifique o canto superior esquerdo do retângulo de saída

Imagem original

imagem original
Imagem original de 320x240

Exemplo 1

80x60

Para cortar uma seção 80 × 60, iniciando na posição (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • O áudio é copiado em fluxo neste exemplo, portanto, a recodificação é evitada.

Exemplo 2

quarto inferior direito

Para cortar o quarto inferior direito:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

É o mesmo que:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

Qual é o mesmo que:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Você pode consultar o tamanho da imagem de entrada com in_we in_hcomo mostrado neste primeiro exemplo. A largura e a altura da saída também podem ser usadas com out_we out_h.

Exemplo 3

20 pixels de cima e 20 de baixo

Corte 20 pixels da parte superior e 20 da parte inferior:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • O filtro centralizará automaticamente o corte se xe yfor omitido, como neste exemplo.

Visualização

Você pode fazer uma colheita (heh heh) e visualizá-la ao vivo com ffplay:

ffplay -i input -vf "crop=in_w:in_h-40"

Dessa forma, você pode experimentar e ajustar seu corte sem a necessidade de codificar, visualizar e repetir.

Notas

  • crop documentação do filtro

  • O codificador padrão para MP4 é libx264(vídeo H.264) ou mpeg4(vídeo MPEG-4 Parte 2), dependendo da sua ffmpegcompilação. Consulte FFmpeg Wiki: Guia de codificação de vídeo H.264 para obter mais informações.

  • Em vez de cortar e recodificar, considere cortar durante a reprodução. Isso é possível com qualquer jogador que valha a pena usar.

  • Antiga ffmpegconstrói usado -croptop, -cropbottom, -cropleft, -croprightopções em vez do cropfiltro. Se este for o seu caso, adquira um modernoffmpeg . O desenvolvimento é muito ativo e não há razão para usar uma antiguidade.


2
Isso funciona com 'avconv' agora.
Joce

Eu tenho um 1923x1080 e quero 1920x1080. Este é o elogio que tentei: /Users/kukodajanos/Workspace/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter:v "crop=1920:1080:0:0" -c:a copy /Users/kukodajanos/Desktop/video_640x480-4.mp4mas o filme original é devolvido.
János

@Joce JFYI avconv faz parte de libav - um fork do ffmpeg
andrybak

1
vale a pena mencionar esta técnica (com o cropfiltro) re-codifica o vídeo, ver stackoverflow.com/questions/33378548/... Se as coisas re-codificação para você
abernier

1
editado para alterar o desatualizado -filter:vpara o mais atualizado e mais simples de digitar -vf. Felicidades!
Elder Geek
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.