Reduzindo o tamanho do arquivo de vídeo no Ubuntu?

3

Como reduzo o tamanho do arquivo de vídeos? Por alguma razão, por telefone, leva vídeos gigantes. O pior deles é um vídeo de 20 minutos que ocupa 13 GB inteiros. Como posso diminuir o tamanho desses arquivos? São mp4s codificados em H.264 e MPEG-4 AAC e reproduzidos a 30 fps.

Tudo bem se houver redução na qualidade.

Eu tentei usar avconv para reduzir a resolução, mas mesmo que isso gerasse um vídeo com dimensões menores, o tamanho aumentava bizariamente .

O que é uma boa maneira de reduzir os tamanhos desses arquivos?

    
por quantumbutterfly 09.06.2017 / 22:57

2 respostas

3

Para reduzir o tamanho do seu mp4 você tem duas boas escolhas com o FFmpeg:

  1. Experimente as configurações do fator de taxa constante (CRF) para encontrar uma correspondência entre o tamanho da saída de vídeo e a qualidade do vídeo
  2. Experimente a taxa de bits definida de sua escolha e use uma codificação de 2 passagens.

Detalhes de ambos abaixo:

1. Redimensionar usando a opção FFmpeg do fator de taxa constante (CRF):

No FFmpeg, as configurações do CRF variam de 0 a 51, com 0 sendo sem perda e 51 sendo surpreendentemente de baixa qualidade. O padrão é 23 e você precisa encontrar o "ponto ideal" para o seu vídeo específico de tamanho de arquivo e qualidade de vídeo com alguma experimentação.

Uma linha de comando de amostra seria:

ffmpeg -i input.mp4 \
       -c:v libx264 -preset slow -crf 22 \
       -c:a copy \
       output.mp4

Note que nesta linha de comando o vídeo é recodificado e o áudio é simplesmente copiado . Coisas a considerar:

  1. Se o tamanho ainda for muito grande e a qualidade do vídeo ainda for aceitável, tente -crf 24 e assim por diante (incrementalmente aumentando o inteiro crf) até encontrar um compromisso aceitável entre a qualidade do vídeo e tamanho do arquivo.
  2. Se a qualidade do vídeo for muito baixa, tente crf 20 e assim por diante (incrementalmente diminuindo o inteiro crf) até encontrar um compromisso aceitável entre a qualidade do vídeo e o tamanho do arquivo.

2. Redimensionar usando as opções de 'definir taxa de bits' + 'passar codificação' do FFmpeg:

Outra opção, que indiscutivelmente não , produzirá resultados tão bons quanto o exemplo do CRF é usar a taxa de bits definida de sua escolha e usar uma codificação de 2 passagens. O exemplo a seguir disso é um único comando :

ffmpeg -y -i input.mp4 \
       -c:v libx264 -preset slow -b:v 1000k -pass 1 \
       -c:a copy -f mp4 /dev/null && \
ffmpeg -i input.mp4 \
       -c:v libx264 -preset slow -b:v 1000k -pass 2 \
       -c:a copy \
       output.mp4

Novamente, neste exemplo, o vídeo é recodificado e o áudio é simplesmente copiado. Coisas a considerar:

  1. O vídeo ainda é muito grande? Diminuir a taxa de bits ...
  2. Qualidade muito fraca? Aumentar a taxa de bits ...

Continue fazendo isso até encontrar um compromisso aceitável entre a qualidade do vídeo e o tamanho do arquivo.

Referências:

por andrew.46 10.06.2017 / 01:44
0

Então eu percebi isso. O sinalizador "-b" no ffmpeg define a taxa de bits. Eu também descobri que 1.000.000 é um bom valor de uso geral que fornece uma troca decente entre tamanho de arquivo e qualidade.

Então, execute "ffmpeg -i inputfilename.mp4 -b 1000000 outputfilename.mp4"

Você pode substituir o 1000000 por outro valor de taxa de bits, se desejar. Além disso, você pode incluir um sinalizador "-s WxH" para definir o tamanho do vídeo de saída. Então, para fazer o vídeo de saída 720p, você incluiria "-s 1080x720"

    
por quantumbutterfly 10.06.2017 / 02:23

Tags