Converta vídeos “H264 MP4 AVC (parte 10) (avc1)” / “MPEG AAC 48kHz” 1080p 23.976000fps para 720p, com a qualidade mais completa possível

0

file diz que todos os arquivos são ISO Media, MPEG v4 system, version 2 e as informações do título são do VLC 2.0.9. IMO 1080p não é necessário, especialmente porque os outros vídeos anteriores são 720p e estão bem; Eu não sei e não tenho certeza, mas acho que todos esses vídeos são HD, o que explica seu tamanho. O resto da informação dada por VLC durante a reprodução, para completar:

Decoded format: Planar 4:2:0 YUV

Eu encontrei não apenas uma resposta e todos usam ffmpeg , mas avconv é o sucessor; Eu sei, eles são a mesma coisa, na maior parte pelo menos. Eu sei por experiência avconv não aceita algumas opções projetadas para ffmpeg . Sem mencionar que ambos têm opções que parecem semelhantes dentro do mesmo programa, mas têm resultados totalmente diferentes.

    
por rautamiekka 16.12.2013 / 23:02

1 resposta

3

1. Obter código%

É sempre uma boa ideia usar uma compilação recente ao codificar com ffmpeg . O desenvolvimento é muito ativo e o uso de uma compilação recente permitirá que você evite bugs corrigidos, além de fornecer acesso aos recursos mais recentes.

Existem dois métodos principais para obter ffmpeg e nenhum deles interferirá nos pacotes do repositório, incluindo o pacote "ffmpeg":

Usando uma compilação estática

Isto é simplesmente um binário que alguém compilou. Tudo que você faz é baixar, extrair e executá-lo (observe o ffmpeg antes de ./ ):

wget http://ffmpeg.gusari.org/static/32bit/ffmpeg.static.32bit.$(date +"%F").tar.gz
tar xzvf ffmpeg.static.32bit.$(date +"%F").tar.gz
./ffmpeg -i input.mp4 <your options> output.mkv

Compilando ffmpeg

Ao compilar, você controla exatamente como o ffmpeg está configurado e também permite que você use determinados codificadores, como ffmpeg , que não estão disponíveis nas compilações estáticas.

Basta seguir um guia passo-a-passo: Como compilar o FFmpeg no Ubuntu . Se você pode copiar e colar, você pode compilar libfdk_aac .

2. Codificar

ffmpeg -i in.avi -vf scale=-1:720 -c:v libx264 -crf 18 -preset fast -c:a copy out.mkv

Neste exemplo:

  • O ffmpeg filter para redimensionar o vídeo. Com scale você pode simplesmente declarar uma dimensão, altura neste caso, e usar scale na outra. -1 calculará automaticamente o valor correto enquanto mantém a proporção.

  • O codificador ffmpeg produzirá vídeo H.264. A qualidade é controlada com libx264 . O intervalo é uma escala de log de 0 a 51. 0 é sem perdas (os arquivos provavelmente serão enormes), 18 é geralmente considerado "sem perda visual", 23 é padrão e 51 é de pior qualidade. Geralmente você usa o valor mais alto que ainda lhe dá uma qualidade aceitável.

  • A velocidade de codificação em vídeo / eficiência de compressão para este codificador é controlada com o -crf . Estes são: ultra-rápidos, super rápidos, muito rápidos, rápidos, médios, lentos, lentos, veryslow. O padrão é "médio". Geralmente você usa a predefinição mais lenta para a qual tem paciência.

  • Para um conjunto de vídeos, use o mesmo -preset e -crf para todos eles.

  • O áudio será fluxo copiado da entrada para a saída. Pense nisso como copiar e colar.

  • O contêiner de saída Matroska será usado. Ele suporta mais formatos, não é tão amplamente suportado por players e dispositivos como o MP4, por exemplo.

Codificando todos os vídeos

Você pode usar um bash "for loop" para codificar todos os vídeos em um diretório:

mkdir encoded
for f in *.avi; do ./ffmpeg -i "$f" -vf scale=-1:720 -c:v libx264 -crf 18 -preset fast -c:a copy encoded/"${f%.avi}.mkv"; done

Veja também

  • Guia de codificação do FFmpeg e x264
  • Guia de codificação do FFmpeg e AAC
por LordNeckbeard 17.12.2013 / 01:52