Mexendo com vídeo (ffmpeg)

Reduzir tamanho:

ffmpeg -i 20190224_181106.mp4 -vcodec libx264 -fs 20M -crf 20 -s 600X340 out.mp4

para o exemplo acima, o tamanho máximo do vídeo será 20 MB e terá um corte para a proporção 600×340 pixels

Girar:

ffmpeg -i in.mov -vf "transpose=1" out.mov

Para o parâmetro transpose dá pra usar:

0 = girar 90 graus no sentido horário e espelhamento horizontal (padrão)
1 = 90 graus horário apenas
2 = 90 graus antihorário
3 = 90 graus horário com espelhamento vertical

Dá pra usar -vf "transpose=2,transpose=2" para girar 180 graus.

Cortar

ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 -c copy output.mp4

Juntar vídeo com áudio

ffmpeg -y -loglevel ‘repeat+info’ -i ‘file:ARQUIVO_DE_VIDEO.mp4’ -i ‘file:ARQUIVO_DE_AUDIO.ogg’ -c copy -map ‘0:v:0’ -map ‘1:a:0’ ’file:ARQUIVO_DE_DESTINO.mkv

Onde:
-y = “Copia por cima” se já houver um arquivo com o nome ARQUIVO_DE_DESTINO.mkv no diretório de origem. Eu uso isso porque por vezes faço vários testes, então evita de ter que ficar apagando ou recebendo mensagem de “deseja sobrescrever?”
-loglevel ‘repeat+info’ = garante que o log de erros vai ser o mais completo possível. É útil no caso de ter algum problema e precisar pedir ajuda, e uma vez ou outra esses logs já me ajudaram a entender e resolver a situação sozinho
-i = O arquivo de entrada, de origem – esse “i” é de “input”
-c copy = especifica que é para copiar a entrada para a saída, ou seja, não é para substituir os arquivos originais
-map = Basicamente ela está dizendo para pegar todo o stream (o identificador “0”) do vídeo (“:v:”) e jogar em todo (“0”) o stream da saída, assim como pegar o primeiro stream (“1”) do arquivo de áudio (“:a:”) e jogar no stream de áudio (“0”) do arquivo de saída

Converter legenda VTT em SRT:

ffmpeg -i legenda.vtt legenda.srt
 

O FFMPEG é um programa fantástico para lidar com vídeo, muito legal você estar compilando algumas coisas sobre ele aqui. Se eu soubesse programar gostaria de fazer um editor simples baseado no FFMPEG, inicialmente me bastaria que ele cortasse e juntasse, se possível depois iria inserindo uma ou outra funcionalidade. Talvez trabalhar em cima do VSE do Blender seria uma boa, o único grande problema do VSE, pra mim, é que ele não tem precisão de frame, então a cada ação eu preciso esvaziar e atualizar o buffer senão os cortes saem todos errados…

Tentando contribuir um pouco com a sua compilação,um comando que eu uso muito no FFMPEG é juntar um arquivo de vídeo (sem áudio) com um arquivo de áudio. A sintaxe é essa aqui:
bq. ffmpeg -y -loglevel ‘repeat+info’ -i ‘file:ARQUIVO_DE_VIDEO.mp4’ -i ‘file:ARQUIVO_DE_AUDIO.ogg’ -c copy -map ‘0:v:0’ -map ‘1:a:0’ ’file:ARQUIVO_DE_DESTINO.mkv

Os parâmetros são os seguintes:

  • -y = “Copia por cima” se já houver um arquivo com o nome ARQUIVO_DE_DESTINO.mkv no diretório de origem. Eu uso isso porque por vezes faço vários testes, então evita de ter que ficar apagando ou recebendo mensagem de “deseja sobrescrever?”
  • -loglevel ‘repeat+info’ = garante que o log de erros vai ser o mais completo possível. É útil no caso de ter algum problema e precisar pedir ajuda, e uma vez ou outra esses logs já me ajudaram a entender e resolver a situação sozinho
  • -i = O arquivo de entrada, de origem – esse “i” é de “input
  • -c copy = especifica que é para copiar a entrada para a saída, ou seja, não é para substituir os arquivos originais
  • -map = Basicamente ela está dizendo para pegar todo o stream (o identificador “0”) do vídeo (“:v:”) e jogar em todo (“0”) o stream da saída, assim como pegar o primeiro stream (“1”) do arquivo de áudio (“:a:”) e jogar no stream de áudio (“0”) do arquivo de saída

Espero que tenha ajudado. Eu tenho mais algumas coisas que já usei do FFMPEG que foram úteis em algum momento, mas estão dentro de algum script que já não uso há tempos, vou ver se acho isso.

 
   

que massa, Marcus. Nunca precisei juntar vídeo e áudio, mas é bom ter o comando na mão!
Somei ali na wiki.