Este artigo explica como cortar vídeos usando FFmpeg (com exemplos) na linha de comando. É especialmente útil para cortar vários vídeos em lote, mas alguns (inclusive eu) também podem preferir isso a um editor de vídeo completo para fazer alguns cortes de vídeo. O artigo também inclui capturas de tela que mostram exatamente o que está sendo cortado.
Para exemplificar a aplicação do filtro de corte FFmpeg, estou usando esta imagem 500x300, em que cada quadrado tem um tamanho de 100x100 pixels:

Para cada comando de exemplo, a imagem é cortada usando o comando de corte FFmpeg real desse exemplo, para que você possa ver exatamente o que acontece ao usá-lo. Isso é possível porque os mesmos comandos também podem ser usados para cortar.
Para poder usar esses comandos, você precisará ter o FFmpeg instalado em seu sistema. FFmpeg é um projeto gratuito e de código aberto que consiste em várias bibliotecas e programas para lidar com vídeo, áudio e outros arquivos e fluxos de multimídia. Em seu núcleo está o programa de linha de comando FFmpeg, que pode ser usado para transcodificação, edição básica, dimensionamento de vídeo e efeitos de pós-produção.
Vamos começar com o básico. Para cortar uma parte de um vídeo usando FFmpeg, o comando tem a seguinte aparência:
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
O que tudo isso significa:
-i input.mp4 especifica o vídeo de entrada (input.mp4 sendo o vídeo de entrada/original neste caso)-filter:v (pode ser abreviado para -vf) especifica que estamos usando um filtro de vídeo"crop=W:H:X:Y" significa que estamos usando o filtro de vídeo "cortar", com 4 valores:
w a largura do vídeo de saída (portanto, a largura da região cortada), que é padronizada para a largura do vídeo de entrada (largura do vídeo de entrada = iw, que é o mesmo que fa0993338b4e44ec203b8); out_w também pode ser usado em vez de wh a altura do vídeo de saída (a altura da região recortada), que assume como padrão a altura do vídeo de entrada (altura do vídeo de entrada = ih, com e82e7c8b6864406bab4a2546c6c56a sendo outra coisa4); out_h também pode ser usado em vez de hx a posição horizontal de onde começar o corte, começando da esquerda (com a margem esquerda absoluta sendo 0)y a posição vertical de onde começar o corte, começando do topo do vídeo (o topo absoluto sendo 0)output.mp4 é o novo arquivo de vídeo recortadoAlgumas notas:
x e y são omitidos, assim x padrões para (iw-w)/2 e y para (ih-h)/2keep_aspect que você pode definir como 1 para forçar a proporção de exibição de saída a ser a mesma da entrada (exemplo de uso: crop=100:100:0:0:keep_aspect=1). Isso não funcionará com imagens, é por isso que você não vê um exemplo separado com captura de tela aquiiw) e valores de altura (ih) automaticamente, assim você pode executar operações matemáticas usando esses valores (por exemplo iw/2 para metade da largura vídeo de entrada, ou ih-100 para subtrair 100 pixels a partir da altura de entrada de vídeo).Isso pode parecer um pouco complicado, mas você verá nos exemplos que não é muito o caso (mas é claro, isso depende do que você deseja alcançar).
Você pode visualizar (reproduzir) o corte do vídeo sem esperar por sua recodificação, reproduzindo-o com ffplay (útil para ver rapidamente se a região cortada está correta), assim:
ffplay -filter:v "crop=w:h:x:y" input.mp4
Isso não modifica o vídeo input.mp4 de forma alguma e não produz um novo vídeo. É apenas para fins de visualização/reprodução.
Vejamos um exemplo de corte FFmpeg básico no qual cortaremos um quadrado de 100 pixels do centro.
Para cortar um quadrado de 100 pixels (de modo que a largura e a altura da região cortada seja de 100 pixels) do centro de input.mp4 vídeo, você pode especificar apenas o tamanho da área de corte de 100x100 (já que o filtro de corte do FFmpeg tem como padrão centralizar se os valores x e y não forem especificados), assim:
ffmpeg -i input.mp4 -filter:v "crop=100:100" output.mp4
Exemplo de corte FFmpeg: corte uma seção de 100 x 100 do canto superior esquerdo do vídeo.
Para recortar uma seção de 100x100 pixels do canto superior esquerdo (de modo que x e y sejam 0) de um vídeo, use:
ffmpeg -i input.mp4 -filter:v "crop=100:100:0:0" output.mp4
Exemplo de corte FFmpeg: corte a seção superior direita de 100 x 100 pixels de um vídeo.
Exemplo em que usaremos a largura do vídeo de entrada (iw) para cortar a seção superior direita 100x100 pixels de um vídeo. Em vez de inserir manualmente o valor x, usaremos iw e subtrairemos 100 pixels dele:
ffmpeg -i input.mp4 -filter:v "crop=100:100:iw-100:0" output.mp4
Exemplo de corte FFmpeg: corte um retângulo de 100x200 pixels da posição 0,100.
Para usar o filtro de vídeo de corte FFmpeg para cortar um retângulo de 100x200 pixels da posição 0,100:
ffmpeg -i input.mp4 -filter:v "crop=200:100:300:100" output.mp4
Relacionado: FFmpeg: Extraia áudio do vídeo no formato original ou converta-o para MP3 ou Ogg Vorbis
*Cortar um vídeo 16:9 para 4:3 na proporção de aspecto, cortando as bordas (fonte; isso não funciona com imagens, então não deve ser o que é óbvio para exemplificar . *
ffmpeg -i input.mp4 -filter:v "crop=ih/3*4:ih"
Corte 50% da largura e altura começando da parte superior direita do vídeo de entrada.
Corte 50% da largura do vídeo e 50% da altura do vídeo (o que significa que o vídeo de saída será um quarto - 25% - do vídeo de entrada), começando do canto superior direito do vídeo de entrada:
ffmpeg -i input.mp4 -filter:v "crop=iw*(5/10):ih*(5/10):iw:0" output.mp4
Neste caso, estamos usando a largura de entrada (iw) como o x coordenadas (para começar o corte da direita), e 0 como o y coordenadas (para começar a partir do topo).
Você também pode gostar de: Como baixar uma lista de reprodução do YouTube e convertê-la em MP3 usando youtube-dl (linha de comando)
Para cortar as bordas de um vídeo usando FFmpeg (bordas superior, inferior, esquerda e direita), use:
ffmpeg -i input.mp4 -filter:v "crop=iw-n:ih-n" output.mp4
Neste comando, você já sabe que iw representa a largura do vídeo de entrada e ih é a altura do vídeo de entrada (em pixels); como para n e m:
n é o número de pixels a recortar de iw (largura do vídeo de entrada)m é o número de pixels a recortar de ih (altura de vídeo de entrada)Exemplo.

Para cortar 200 pixels da altura de entrada de vídeo (ih), ou seja, para cortar 100 pixels a partir do topo e 100 pixels a partir da parte inferior, e cortar 100 pixels a partir da largura de vídeo de entrada (iw), ou seja, para cortar 50 pixels a partir da esquerda e 50 pixels a partir da direita:
ffmpeg -i input.mp4 -filter:v "crop=iw-100:ih-200" output.mp4
Se você sabe/pode especificar a largura e a altura do vídeo de entrada (500x300 neste exemplo), o comando acima também pode ser escrito como:
ffmpeg -i input.mp4 filter:v "crop=500-100:300-200" output.mp4
Isso também é o mesmo:
ffmpeg -i input.mp4 -filter:v "crop=400:100" output.mp4
Recortar apenas as bordas esquerda e direita (100 pixels da esquerda e 100 pixels da direita, então 200 pixels no total)
ffmpeg -i input.mp4 -filter:v "crop=iw-200" output.mp4
Ou cortar apenas as bordas superior e inferior (100 pixels da parte superior e 100 pixels da parte inferior) usando FFmpeg:
ffmpeg -i input.mp4 -filter:v "crop=iw:ih-200" output.mp4
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
FFmpeg: How To Crop Videos, With Examples