FFMPEG / x264: posso usar a passagem 1 de uma sessão de codificação como passagem 2 para outra?

0

Pergunta:

É legal usar uma codificação "pass 1" de um vídeo de origem em uma resolução / taxa de bits como a entrada para uma codificação "pass 2" da mesma origem em uma resolução / bitrate diferente ? Eu tentei e seeeeeeems para trabalhar, mas não estou certo de que será no caso geral: o perfil de fluxo (I / P / B escolha de quadros, etc. ) parece diferente de usar os mesmos parâmetros para ambos os passes, mas também parece "bom o suficiente".

Estou no ponto em que preciso de uma resposta autoritária sobre isso.

Por que no tarnation 1 você faria isso?

Porque a codificação de duas passagens corrige um bug enlouquecedor no FFMPEG (x264, na verdade) que provavelmente não será corrigido em breve: dependendo da velocidade da sua máquina, o primeiro ~ 1 segundo ou mais de vídeo geralmente terá uma taxa de bits altamente inapropriada. Isso é muito facilmente reproduzido com um fluxo de origem de alta taxa de bits transcodificado para uma taxa de bits baixa em uma máquina muito rápida (como um EC2 c4.8xlarge ). Um iBook quadcore i7 MacBook Pro NÃO É suficiente para reproduzir este bug.

Ele será EXCEDENTE alto:

  • CBR de passagem única sem VBV especificado

    (ignorar o fato de que o CBR sem um VBV não é CBR de todo )

ou muito baixo:

  • CBR de passagem única com VBV
  • VBR de passagem única: QScale com VBV e maxrate

As medições de qualidade VIFp e SSIM mostram que as taxas de bits mais baixas / altas realmente correspondem a qualidade desnecessariamente reduzida / aumentada (ou seja, a taxa de bits NÃO deve ter sido maior ou menor).

Fazer uma codificação CBR de duas passagens funciona excelente e resolve o problema ... se você tiver tempo para isso. Infelizmente, não posso permitir a latência de uma codificação de duas passagens para uma única resolução.

Então, o que você quer fazer?

No momento, estou executando uma transcodificação inicial com uma resolução mais baixa (480). Isso cobrirá tantos dispositivos de reprodução quanto possível. Eu gostaria de usar isso como meu passe 1. Como a resolução de 480 é ruim, posso postar apenas 1 vídeo como meu 480, independentemente de quaisquer taxas de bits bobas no primeiro segundo de vídeo.

Eu então gostaria de usar 480 informações 1 passe e só passar 2 nas minhas resoluções mais altas. No caso CBR / VBV, isso seria:

ffmpeg -i source.mp4 -pass 1 -vf  scale=852:480 -c:v libx264 -b:v 1000k ... 480.mp4
ffmpeg -i source.mp4 -pass 2 -vf scale=1280:720 -c:v libx264 -b:v 2500k ... 720.mp4

    
por Mark Gerolimatos 17.09.2015 / 00:22

0 respostas