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 w
h
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 h
x
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)/2
keep_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