Linux: Converter entre formatos de vídeo MP4/MOV/WMV

Republicado de qastack.com.br

 

MP4

Supondo que você esteja usando uma versão recente de ffmpeg:

ffmpeg -i input -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k \
-movflags +faststart -vf scale=-2:720,format=yuv420p output.mp4
  • -crf: Qualidade. O intervalo é logarítmico de 0 (sem perdas) a 51 (pior qualidade). O padrão é 23. O intervalo sadio subjetivo é de aproximadamente 18 a 28 anos. Use o valor mais alto que ainda lhe oferece uma qualidade aceitável. Se você estiver re-codificando entradas impraticamente grandes para enviar ao YouTube ou similar, tente um valor de 17 ou 18, pois esses serviços de vídeo serão recodificados de qualquer maneira.

  • -preset: Velocidade de codificação. Uma predefinição mais lenta fornece melhor compactação (qualidade por tamanho de arquivo), mas é mais lenta. Use o mais devagar que você tiver paciência: ultra-rápido, super-rápido, muito rápido, mais rápido, rápido, médio (o padrão), lento, mais lento, muito lento.

  • -movflags +faststart: Permite que o vídeo seja reproduzido antes de ser baixado completamente no caso da visualização progressiva do download. Útil se você estiver hospedando o vídeo, caso contrário, será supérfluo ao fazer o upload para um serviço de vídeo como o YouTube.

  • -vf scale=-2:720,format=yuv420p: Um gráfico de filtro usando filtros de escala e formato de vídeo. Dimensione para 720 pixels de altura e escolha automaticamente a largura que preservará o aspecto e verifique se o formato do pixel é compatível com players burros.

  • -b:a 128k: Taxa de bits do áudio. Se o seu ffmpegestiver desatualizado, você precisará adicioná -strict experimental-lo -c:a aac.

MOV

Como seus arquivos MOV e MP4 provavelmente contêm os mesmos formatos de vídeo e áudio, você pode codificar o MP4 e fazer o MOV realocando novamente (com o modo de cópia de fluxo ) ao invés de recodificar:

ffmpeg -i input.mp4 -codec copy output.mov

WMV

O FFmpeg suporta apenas WMV 7 e 8. Não conheço um codificador de código aberto para a versão 9.

$ ffmpeg -encoders | grep -i windows
[...]
 V..... = Video
 A..... = Audio
 ------
 V..... wmv1                 Windows Media Video 7
 V..... wmv2                 Windows Media Video 8
 A..... wmav1                Windows Media Audio 1
 A..... wmav2                Windows Media Audio 2

Como não estou familiarizado com esses codificadores, só posso dar um exemplo não testado:

ffmpeg -i input -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k output.wmv

Obtendo o ffmpeg

Você pode fazer o download de uma compilação Linux do ffmpeg ou seguir um guia passo a passo da compilação do ffmpeg para personalizar sua compilação.

Usando um bash "loop for" para executar uma codificação em lote

Para codificar todos os vídeos em um diretório:

$ mkdir encoded
$ for f in *.avi; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium \
  -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:720,format=yuv420p \
  "encoded/${f%.avi}.mp4"; done

Comentários