O artigo que você vinculou não é muito bom.
Normalmente, as codificações de taxa de bits de passagem única convertem sua taxa de bits em um valor de RF com um limite máximo de taxa de bits e a levam a partir daí.
O controle de rato ABR de uma passagem do x264 não é implementado como limite de CRF +. Ele está certo que o 2pass é de longe a melhor maneira de atingir uma taxa de bits alvo.
E ele aparentemente não percebe que poderia iniciar o x264 com threads = 3 ou algo assim, para deixar algum tempo de CPU livre para outras tarefas. Ou defina a prioridade do x264 como muito baixa, para obter apenas o tempo de CPU que nenhuma outra tarefa deseja.
Ele também mistura threads = 1 com o uso de CUDA, ou algo assim. Não é de admirar que você tenha dúvidas, porque esse artigo tem uma explicação TERRÍVEL. O artigo inteiro se resume basicamente a: use x264 --preset veryslow --tune film --crf 26 in.m2ts --out out.mkv
, ou talvez use alguma filtragem de luz com um script AviSynth de entrada. Ele realmente recomenda "placebo". Isso é hilário. Eu nunca vi um arquivo pirata codificado com placebo. (você pode distinguir de me=esa
ou me=tesa
, em vez de me=umh
todas as predefinições de boa qualidade, até veryslow
.
Ele também não menciona o uso de profundidade de cor de 10 bits. Mais lento para codificar e decodificar, mas mesmo após a conversão para 8 bits, você obtém um SSIM de 8 bits melhor. Ter mais precisão para vetores de movimento aparentemente ajuda. Além disso, não é necessário arredondar para exatamente um valor inteiro de 8 bits. Você pode pensar em 8 bits por componente como um hack de velocidade; quantizar no domínio da frequência e depois compactá-lo com o CABAC significa que coeficientes de profundidade de bits mais altos não precisam ocupar mais espaço.
(BTW, o h.265 obtém menos benefícios com codificações de 10 bits para vídeo de 8 bits porque já possui mais precisão para vetores de movimento. Se houver um benefício em usar x265 de 10 bits para entradas de vídeo de 8 bits, é menor que com x 264. Portanto, é menos provável que a pena de velocidade valha a pena.)
Para responder sua pergunta real:
edit: doom9 está novamente ativo agora, então vou arrumar o link. Vá a ele para citar corretamente quem disse o quê.
http://forum.doom9.org/showthread.php?p=1135399#post1135399
o Google apenas armazena em cache a versão estúpida de impressão, que não mostra corretamente a citação. Não tenho muita certeza de quais partes dessas mensagens são citadas e quais são atribuídas à própria pessoa.
Padrões de ramificação altamente irregulares (modos de pular) e manipulação de bits (codificação de quantização / entropia) não se adequam às GPUs atuais. A IMO, a única aplicação realmente boa no momento, é o algoritmo ME de pesquisa completa, no final, embora a pesquisa completa acelerada ainda seja lenta, mesmo que seja mais rápida que na CPU.
- MfA
Na verdade, basicamente tudo pode ser feito razoavelmente na GPU, exceto o CABAC (o que poderia ser feito, apenas não podia ser paralelo).
x264 O CUDA implementará inicialmente um algoritmo ME de fullpel e subpel; mais tarde, poderíamos fazer algo como RDO com uma aproximação de custo em vez de CABAC.
Porque ele tem que fazer tudo no único ponto flutuante de precisão
- MfA
Errado, o CUDA suporta matemática inteira.
- Shikari Escuro
Dark Shikari é o mantenedor do x264 e desenvolvedor da maioria dos recursos desde 2007 ou mais.
AFAIK, este projeto CUDA não deu certo. Há suporte para o uso do OpenCL para descarregar parte do trabalho do encadeamento lookahead (decisão rápida de I / P / B, não uma codificação final de alta qualidade do quadro).
Meu entendimento é que o espaço de pesquisa para codificação de vídeo é tão grande que as heurísticas inteligentes para o término antecipado dos caminhos de pesquisa nas CPUs superam as GPUs de força bruta que trazem para a mesa, pelo menos para a codificação de alta qualidade. É apenas comparado a -preset ultrafast
onde você pode escolher razoavelmente a codificação HW em vez de x264, esp. se você tiver uma CPU lenta (como laptop com dual core e sem hyperthreading). Em uma CPU rápida (i7 quad core com hyperthreading), o x264 superfast
provavelmente será tão rápido e parecerá melhor (com a mesma taxa de bits).
Se você estiver fazendo uma codificação em que a distorção da taxa (qualidade por tamanho do arquivo) é importante, use x264 -preset medium
ou mais lento. Se você estiver arquivando algo, gastar um pouco mais de tempo da CPU agora economizará bytes enquanto você mantiver esse arquivo por perto.
observação lateral: se você vir mensagens de deadrats em um fórum de vídeo, isso não será útil. Ele está errado sobre a maioria das coisas que ele está falando em todos os tópicos que eu já vi. Suas postagens apareceram em alguns tópicos que pesquisei sobre a codificação x264 GPU. Aparentemente, ele não entende por que não é fácil e postou várias vezes para dizer aos desenvolvedores do x264 por que eles são burros ...
-c:v libx264 -preset slower
(o que não é tão lento, como quase em tempo real para 1920x1080p24 em um Skylake i7-6700k.)