Codec X264 - Mpeg4 AVC/H.264


26-01-2006 por BuZz_BH
Codec X264 - Mpeg4 AVC/H.264
Gente vou apresentar pra vocês, de uma forma leiga sem muitos detalhes, o melhor Codec de vídeo que já usei até hoje!

Sim, o melhor!

Tá, e a intenção deste tópico? A intenção deste tópico é justamente aprensetá-lo para quem não conhece, não é uma novidade fresca, mais pode ser desconhecida por muitos.

Em todos meus testes o codec superou o DivX 6.1(O melhor DivX já lançado), o XviD Koepi 1.1.0 e até o formato de alta compactação Real Media 10 plus *.rmvb.

E no geral? É um codec extremamente poderoso e dinâmico capaz de trabalhar com alta ou baixa bit rate, capaz de se encodificar um vídeo para ser enviado em um e-mail por exemplo(com boa qualidade) e um vídeo para ser gravado em DVD mantendo uma qualidade explendida talvez até superior ou semelhante a do formato MPEG-2 que trabalha com poucas perdas.

Esse formato está sendo usado nas novas câmeras digitais, justamente pelo poder de compactação, com 256MB de memória em uma câmera você pode gravar até 2 horas de filme com uma boa qualidade e 30 minutos com uma excelente qualidade.

Existe vários outros codecs desse novo padrão, que ainda estão em desenvolvimento ou estão fechados à um custo de uns $$dólares

Mais fica aqui minha dica, gente pode confiar esse é o codec mais poderoso que já vi.

Desvantagem? Se você aguçar o poder de compactação terá uma encodificação de até 0,5fps em um processador potente, em qualidade avançada você encoda em média a 5fps, em qualidade boa que já supera XviD, DivX etc você encoda em 10 15fps(A mesma média do XviD)

Mais isso se você analisar não é uma desvantagem, é uma realidade, para se alcançar a qualidade extrema mais processador será usado, é isso que o codec faz.

Ele não vem com um decodificador embutido, deve se usar o FFDShow(Mais acessível), ou o pacote de codecs Matroka, além do citado pelo coléga abaixo.

Links...

X264 r409:
http://mirror01.x264.nl/x264/revision409/x264-409-install.exe

Site oficial:
http://www.x264.nl/

Decodificador:
FFDSHOW (Pode ser baixado até mesmo no Superdownloads)

EDIT: A descrição do codec fica abaixo por quem tem mais conhecimento, ele corrigiu minhas explicações errônias e imaturas sobre o codec, mais a intenção foi publicar o codec, desculpa pelas explicações ok? ops:

Falou
26-01-2006 por Manabu
Citação:
Pra finalizar cade os geeks dessa seção? :roll:
Um está aqui. Demorei demais para ter a iniciativa de postar um tópico sobre isso, mas agora que você postou vou dissecar seu post:

Citação:
Esse codec é baseado na nova fórmula do MPEG-4
Sendo mais preciso, o padrão no qual o x264 se baseia é o Mpeg4 part-10, que também é conhecido como Mpeg4 AVC ou H.264.
Existe também, e continua existindo, o padrão Mpeg4 part-2, também conhecido por Mpeg4 ASP, que é no qual o Xvid, Divx, NeroDigital ASP, Lavc, 3vix, etc, se baseiam.

Citação:
como a quantização H264
Erro comum. Não existe nada disso de quantização H.264. H.263 é um padrão de vídeo e também um tipo de quantização para o padrão Mpeg4 ASP. H.264 é somente um dos nomes desse novo padrão do grupo MPEG (para quem gosta de saber: Movie Pictures Expert Group). Acho que o H.264 usa mecanismos de quantização parecidos com o Mpeg2, adaptados para suportar os novos formatos de blocos, mas isso é só achismo de minha parte.

Citação:
o uso de referências múltiplas
OK. Até o ASP, só tinham as p-frames com uma referência para a frame anterior e as b-frames com uma referência para a p-frame anterior e outra para a p-frame posterior. Agora os mesmos tipos de frames podem referenciar qualquer frame dentro de um bloco delimitado, e até várias frames de uma vez. As b-frames também podem ser usadas como referências agora.

Citação:
a transformação 8x8 4x4(Isso eu não entendo bem seria um disfarçe, um belo disfarçe para alta compactação)
além das 8x4, 16x8 e 16x16. Ajuda principalmente na compensação de movimento, permitindo mais exatidão na divisão, mas também deve haver um ganho nas intra-frames.

Citação:
uso de referência em B-Frames
Acho que você quis dizer: uso de B-frames como referência. Pois é da natureza de uma B-frame usar referências, isso desde que foi inventada.

Citação:
taxa de bits variável por natureza
Não sei de onde você tirou isso. Não conheço nenhum codec de vídeo (tirando os raw(video bruto não compactado) que nem mesmo é propriamente um codec) que não possa usar VBR. O máximo são formatos pensados principalmente, mas não inteiramente, para streaming, como os da Real. Mas mesmo assim eu não diria que ele é "CBR por natureza".

PS: VBR = Taxa de bits Variável CBR = Taxa de bits Constante

Citação:
deblocking filter etc.
Mais precisamente in-loop deblocking filter. Essa palavrinha é muito importante. Você já pode pré-processar ou pós-processar o vídeo com filtros de deblocking faz tempo. Entretanto, vários novos padrões (Vários. Não foi a MPEG que inventou isso, e não é exclusivo dela) podem filtrar uma frame logo depois de ela ser gerada, mas ainda antes de ela servir de referência para a próxima frame. Isso ajuda a diminuir a melhorar a estimação de movimento, entre outras coisas internas. E além das implicações internas tem as implicações externas de qualquer filtro para artefatos, que acaba em trazer uma imagem mais limpa para a tela.

E nesse "etc" você esqueceu de mencionar outro dos grandes avanços do padrão AVC: o compactador de entropia CABAC. Essa é a ultima parte da codificação de um vídeo, onde os coeficientes, provindos do DCT e quantificação, e os vetores de movimento são compactados juntos sem perdas, como um zip. Comparar o CAVLC com o CABAC é como comparar um zip com um 7z. A compressão é 10~30% superior no caso do CABAC.

Citação:
Enfim há muitas vantagens nesse novo formato, o X264 é freeware e está em constante atualização
Duas coisas que podem causar uma impressão errada, dependendo do jeito que você lê ou interpreta as palavras:

- O novo padrão é diferente do novo codec. x264 é um codec que segue o padrão Mpeg4 AVC. Só a pouco tempo (menos de 1 ano) ele conseguiu superar a qualidade do Xvid na maior parte das áreas, e ainda é dito por alguns inferior à ele nas bitrates próximas à transparência (2000 ~ 3000 kbps).

- Freeware dá a impressão de software grátis. Mas o x264 é até certo ponto um software livre, não só grátis. Até certo ponto pois ele está circundado de patentes. Teoricamente seria preciso pagar à MPEG para desenvolver e distribuir ele, como com o Xvid. Mas isso ainda não acontece. Mas você ainda precisa pagar as licensas para eles ao distribuir em larga escala arquivos codificados nesse padrão. No entanto, nada que um usuário doméstico tenha que se preucupar.

Citação:
ele tem um item a menos do padrão, mais esse item eu diria que não tem importância
Não só um. Falta o suporte à vídeos interlaçados, suporte à mais padrões de cores, e a implementação completa do Weighted Prediction. A falta dos dois primeiros afetam a compatibilidade com certos tipos de input, e a qualidade se você for considerar as perdas necessárias para a adequação, sendo o primeiro relativamente importante. O útimo pode levar a um ganho de qualidade em certas situações.

Citação:
ainda não usei um codec desse padrão pago para comparar
Têm vários codecs comerciais. Entre eles merecem destaque os seguintes:

Ateme - é um codec que rivaliza em qualidade com o x264. Você pode comprá-lo por uma pechincha: pouco mais de US$9.000,00 pela suite completa. Aparece em diversas comparações de codecs mais recentes.

NeroDigital AVC do NeroRecode2 - uma versão antiga do ateme que suporta somente até a MainProfile. Supera por pouco a qualidade do Xvid. Em futuras novas versões a Ahead pode usar uma versão mais nova do Ateme.

Quicktime 7 H.264 - Encoder super lento e limitado, mas com ótima qualidade até onde chega. Parece usar o codec de referência puro, por isso a lentidão e a qualidade. Mais informações/discussão: http://forum.doom9.org/showthread.php

E mais uns dois ou três que são bons mas nem tanto. O resto, em sua maioria, é lixo. Eu nunca usei nenhum também para comparar.

Citação:
mais em comparação ao XviD, DivX e outros H263 ou H263+ esse Codec da um banho.
H263 não tem nada a ver. Os dois são do padrão Mpeg4 ASP. Acho que isso é relacionado ao problema "quantização H.264" que já expliquei acima.

Citação:
[..]e um vídeo para ser gravado em DVD mantendo uma qualidade explendida talvez até superior ou semelhante a do formato MPEG-2 que trabalha com poucas perdas.
A qualidade depende da sua opinião pessoal. Matematicamente a qualidade depois de uma recodificação com perdas vai ser sempre pior. Entretanto você pode gostar do efeito do in-loop filter e achar a qualidade melhor que o original. É subjetivo. Dê uma olhada aqui que você vai se surpreender.

A quantidade de perdas depende quase somente da bitrate. Coloque o Mpeg2 à 100kbps e você vai ver o quanto de perdas que ele pode ter. Mas é verdade que o Mpeg2 é um formato mais voltado para bitrates altas, ao contrário do H.264 que é bem flexível nesse ponto.

Citação:
Esse formato está sendo usado nas novas câmeras digitais, justamente pelo poder de compactção, com 256MB de memória em uma câmera você pode gravar até 2 horas de filme com uma boa qualidade e 30 minutos com uma excelente qualidade.
Qual câmera? Nunca ouvi falar disso. Para mim que este formato não seria usado tão cedo devido a ele exigir muito mais poder de processamento para codificar o vídeo. Mais poder de processamento = processador mais caro = maior liberação de calor = maior consumo de energia = menor durabilidade das pilhas/baterias.

Nem o ASP é usado nas câmeras pelo mesmo motivo, e vê que ele é pelo menos umas 2 vezes mais rápido que o AVC. Se você pretende manter isso de pé me dê fontes. Estou interessado.

Citação:
Desvantagem? Se você aguçar o poder de compactação terá uma encodificação de até 0,5fps em um processador potente, em qualidade avançada você encoda em média a 5fps, em qualidade boa que já supera XviD, DivX etc você encoda em 10 15fps(A mesma média do XviD)
Você não especificou seu equipamento, em especial o processador.

Citação:
Ele não vem com um decodificador imbutido, deve se usar o FFDShow.

Links...

X264 r409:
http://mirror01.x264.nl/x264/revision409/x264-409-install.exe

Site oficial:
http://www.x264.nl/

Decodificador:
FFDSHOW (Pode ser baixado até mesmo no Superdownloads)
Eu uso as compilações do Sharktooth:
http://forum.doom9.org/showthread.php?t=89979

No momento está um pouco defasado, e defasando ainda mais pois parece que ele está com problemas de saude, então não está mais atualizando. Mas normalmente está sempre atualizado.

As compilações dele já vem com uma versão "lite" da megui, uma ótima GUI para fazer encodes para fazer encodes com o x264. Foi criada pelo Doom9 e é a mais usada entre os usuários do fórum dele, inclusive eu.

Nem sei se esse dai é o site oficial, nem se o x264 tem um site oficial. Mas posso dar o link para o fórum "oficial" defacto:
http://forum.doom9.org/forumdisplay.php?f=77

Como decoder eu uso o CoreAVC que é em média 65% mais rápido do que o FFDShow! E quando eu quero ainda mais rápido eu uso o player deles, o TCPMP, que tem uma framework muito mais rápida do que o Directshow, nativo do windows, que a maioria dos player usa. Isso garante mais uns 10% de velocidade.

O problema é que agora ele vai se tornar pago, mas eu ainda tenho a versão 0.0.0.4 alpha dele que, por incrível que pareça olhando nos números, é bem usável. Só não suporta interlaçamento e lossless. Muito raro achar um vídeo com um deles. Mas considere esta versão de testes só como um demo, e não me responsabilizo por nenhum problema legal em usar ela (mas acho que não tem nenhum).

Se alguém quiser hostear para mim, são só 132kbytes o filtro directshow. O TCPMP já com os plugins é 1.04MB. Se não, eu coloco naqueles hosts grátis tipo MegaUpload que tem um monte de propagandas mas fazem o trabalho.

Citação:
É isso, nada demais né, desculpem a explicação chulé, é o básico do básico mesmo ok?

Se alguém puder acrescentar algo agradeço.
Acho que já acrescentei um pouquinho ao que você escreveu. Vou completar dando alguns links para conseguir mais informações, além dos que eu já dei durante o texto:

Wikipédia: Mpeg-4 AVC/H.264 (artigo na Wikipédia, contribuam lá se quiserem)
MPEG-4 AVC/H.264 Information(tópico fixo no Doom9 sobre o padrão Mpeg4 AVC)
Forum Doom9 (Melhor fórum sobre codificação de vídeo do planeta! Na área "Mpeg4 and Co." é onde você vai encontrar as subseções de Mpeg4 AVC, Divx, Xvid, Guis, Contentores/containers, etc)
Benefits of h.264 as compared to ASP codecs (Preste atenção especial para os posts do Akupenguin e do Manao. Eles são desenvolvedores do x264 e Ateme respectivamente.)
Speed and MPEG4 AVC (um gráfico legal comparando a velocidade/qualidade de alguns codecs. A qualidade é medida por funções artificiais feitas para isso, que não são totalmente confiáveis é claro)
Doom9's Codec shoot-out 2005 - Final round (A útima edição da famosa comparação de codecs feita pelo doom9. É interessante ler as fazes iniciais bem como as comparações de anos passados)
26-01-2006 por Manabu
Esqueci de dizer minha opinião pessoal: O x264 é realmente muito bom. Segundo várias comparações, citadas no meu post anterior, o melhor codec de vídeo existente na face da terra em termos de qualidade/tamanho/velocidade no momento que escrevo isto. :wink:

EDIT: Eu sugiro para você modificar um pouco o título (algo como "Mpeg4 AVC/H.264 e o novo codec x264") e pedir para o jqueiroz colocar este tópico no pregão. Se quiser faça as correções, mas acho que isso seria muito trabalhoso.
27-01-2006 por BuZz_BH
O processador que usei foi o da assinatura de 3GHZ, e quanto ao site creio que esse seja o oficial sim.

O deblocking filter eu sei que ele já existia, mais agora pode ser usado no pre-processing, realmente como disse eu sou leigo, foi uma burrisse minha tentar explicar o que eu não sei direito. ops:

O VBR do X264 pode ser calculado e até fixado, diferente dos outros codecs.

Valeu pela dissecação!!! AUHAUHhUUHuhAuhAuAuhAuhahauhAUHAUH :lol:

Mais podia ter dado um desconto. :lol:
27-01-2006 por Manabu
Citação:
O deblocking filter eu sei que ele já existia, mais agora pode ser usado no pre-processing, realmente como disse eu sou leigo, foi uma burrisse minha tentar explicar o que eu não sei direito.
Novamente: in-loop deblocking filter. Não é pré nem pós. É in-loop, durante a codificação. Pré já tinha os vários filtros do Avisynth e do Virtualdub, e até o Divx já tinha a opção de fazer umas filtragens antes da codificação.

Citação:
O VBR do X264 pode ser calculado e até fixado, diferente dos outros codecs.
Ainda não entendi. Explique melhor.

Se você está falando da quantidade de opções disponíveis ao usuário para controlar o grau de variação da bitrate, etc, então isso tem a ver com a implementação, e não com o padrão. Só depende de o quanto os desenvolvedores deixam você mexer e o quanto eles fixam valores que devem ser os ideais. Mas acho que o x264 não tem nada que o Xvid não tenha por exemplo.

E o "x" do x264 é minúsculo, como o "p" de pH também é. Não é tão importante mas é legal manter um padrão.
Citação:
Valeu pela dissecação!!! AUHAUHhUUHuhAuhAuAuhAuhahauhAUHAUH :lol:

Mais podia ter dado um desconto. :lol:
Sem desconto! Alias, você não respondeu a minha pergunta sobre as câmeras. E "mais" é de adição, "mas" que exprime oposição.

Já teve tempo de olhar os links que eu dei? Eu corrigi uns errinhos lá. O principal é que o Manao é desenvolvedor o Ateme, não do x264. Tinha confundido.
27-01-2006 por BuZz_BH
Ok cara mais uma vez você esclarecendo as coisas, bom mais você determina o Deblocking Filter antes do processamento do vídeo e da pra configurar melhor.

Quanto a Variable Bit Rate eu quis dizer que você pode determinar a variação máxima, que por padrão vem em 60%.

Humm especificar o modelo da câmera não posso, vou procurar pra você um vídeo que foi gravado nessa câmera, foi meu pai que tinha chegado a pegar, vou ver se pego com ele ok? O vídeo era Mpeg4 AVC extensão mp4, lembro disso que só foi possível tocá-lo com o VLC player.

Não sei se essa câmera já é vendida.

Falous
27-01-2006 por Manabu
Citação:
Ok cara mais uma vez você esclarecendo as coisas, bom mais você determina o Deblocking Filter antes do processamento do vídeo e da pra configurar melhor.
Não use o in-loop filter como um filtro de pré-processamento. Ele é aplicado só depois de a frame ser processada (mas ainda antes de ela ser usada como referência), então qualquer artefato como ruido ou macroblocos já afetou a codificação fazendo o codec gastar mais bitrate com isso / piorar o problema. Ele foi feito para eliminar somente os artefatos que o próprio codec produz, não para processar a imagem de entrada.

O certo é você achar um valor que te agrade (normalmente entre 3 e -3) e ficar com ele por um bom tempo e muitos filmes, até seu gosto mudar. É claro que você pode alterar o deblocking entre um desenho animado e um filme de verdade, mas tirando isso há pouco o que se mexer.

Citação:
Quanto a Variable Bit Rate eu quis dizer que você pode determinar a variação máxima, que por padrão vem em 60%.
Antigamente eu acho que era possível controlar isso no Xvid, mas devem ter tirado essa possibilidade. De qualquer jeito há formas alternativas de controlar a variação de bitrate como limitando os quantizers e mexendo nos controles de overflow e degradation/bost. E se você quiser um modo totalmente vbr use o modo de quantizer constante sem nenhuma restrição. Ai vai ser 100% VBR. Quase qualquer codec permite isso. Só não ter como controlar precisamente isso não significa que o codec não é nativamente VBR.

Citação:
Humm especificar o modelo da câmera não posso, vou procurar pra você um vídeo que foi gravado nessa câmera, foi meu pai que tinha chegado a pegar, vou ver se pego com ele ok? O vídeo era Mpeg4 AVC extensão mp4, lembro disso que só foi possível tocá-lo com o VLC player.
Tem certeza que ela gravou assim? Pode ter sido gravado em MJPEG e convertido depois para AVC.
30-01-2006 por Manabu
É bom mesmo. Eu aprovo. Uma adição que eu faria é que um número de referências maior, junto com o mixed references, pode ajudar bastante para animação. Até 8 referências é bom ir. É claro: o encode fica mais lento.
 
Guia do Hardware Melhores Tópicos