Editar videos

ffmpeg

Posted by rbits on Wednesday, April 28, 2021

TOC

Histórico

FFmpeg é desenvolvido inicialmente na plataforma Linux, mas o programa já foi compilado para MacOS, Windows,Unix (BSD e Solaris), AmigaOS. Ele é muito usado para acelerar os trabalhos de edição de video. Globo, Uol, Terra, e entre outras empresas fazem uso desse aplicativo.

Para quem desejar converter audio e video, extrair áudio de video, cortar trechos de video, combinar videos, até mudar resolução de fotos, essas são algumas das funcionalidades do utilitário ffmpeg.

O ffmpeg faz parte do projeto de mesmo nome e possui outros excelentes utilitários e bibliotecas para manipulação de videos:

ffmpeg é uma ferramenta de linha de comando que converte um formato de vídeo em outro. 
ffserver é um servidor multimídia HTTP (RTSP sendo desenvolvido) para transmissões ao vivo.
ffplay é um tocador de mídia baseado no SDL e em bibliotecas FFmpeg.
libavcodec é uma biblioteca contendo todos os codificadores e decodificadores do FFmpeg.
libavformat é uma biblioteca contendo os multiplexadores e demultiplexadores de conteúdo de formatos de áudio e vídeo.
libavutil é uma biblioteca de uso comum do projeto.
libpostproc é uma biblioteca contendo as rotinas de processamento de vídeo.
libswscale é uma biblioteca contendo as rotinas de escalonamento de imagem.
libavfilter é um substituto para vhook que permite que o vídeo seja modificado ou examinado entre o decodificador e o codificador.

O projeto ffmpeg é uma solução multiplataforma e completa para gravar, converter e transmitir áudio e vídeo. E ainda pode converter ou simplesmente mudar a resolução de uma imagem. Ele também suporta a conversão desde os formatos antigos até os mais atuais.

Aqui estão algumas aplicações já utilizadas por mim:

  • ffmpeg -i example.mkv -c copy example.mp4_ –> Converte mkv para mp4

  • ffmpeg -framerate 1 -pattern_type glob -i ‘*.JPG’ -c:v libx264 -r 30 -pixfmt yuv420p out.mp4 –> converte *.jpg para mp4

  • ffmpeg -nostdin -i nomearquivo.mkv -vcodec h264 -acodec aac -strict -2 nomearquivo.mp4_ –> conversão mkv para mp4

  • ffmpeg -f concat -i inputs.txt -vcodec copy -acodec copy firt.mp4_ –> onde input.txt contém: file nomearquivo.jpg

  • ffmpeg -ss 00:00:30 -i orginalfile -t 00:00:05 -vcodec copy -acodec copy newfile_ –> Corte parcial em 00:00:30, copiar 5 sec Se mudar o formato é necessário copiar com audio and video codecs, para lista ffmpeg -formats -E

  • ffmpeg -nostdin -i nomearquivo.mkv -vcodec h264 -acodec aac -strict -2 nomearquivo.mp4_ –> conversão mkv para mp4

  • ffmpeg -f concat -i inputs.txt -vcodec copy -acodec copy firt.mp4_ –> onde input.txt contém: file nomearquivo.jpg

  • ffmpeg -i input.mp4 -qscale:v 2 output%03d.jpg –> extrai imagens do video input.mp4

  • ffmpeg -loop 1 -f image2 -i img.png -t 1 out.mp4_ –> gera uma video de 1 segundo

  • Shell script para converter vários arquivos mov para mp4:

    for i in *.MOV;
    do name=`echo "$i" | cut -d'.' -f1`
    echo "$name"
    ffmpeg -i "$i" "${name}.mp4"
    done
    
    • ffmpeg -ss 00:00:03 -i inputVideo.mp4 -to 00:00:08 -c:v copy -c:a copy trim_ipseekcopy.mp4 –> Forma rápida de cut/paste e sem conversão de formato.

    • ffmpeg -i input.jpg -vf scale=320:240 output320x240.png –> Converte imagem jpg para png e resolução

    • ffmpeg -i input.png -vf scale=320:240 output320x240.png –> Converte imagem png para png e resolução

Ponto de atenção: Existe um filtro de escala que pode automaticamente calcular uma dimensão enquanto preserva a relação altura x largura(aspect ratio). Para configurar é somente necessário definir a dimensão no paramentro scale como -1, exemplo: scale=320:-1, or scale=-1:240.

Documentos

Perguntas Mais Frequentes

  • O ffmpeg é pago? Não, é gratuito.