Sobre Produtos Suporte Blog

Os detalhes da compactação sem perdas DropBox H.264

image

 

  By Olga Krovyakova - modified October 6, 2023, created April 3, 2019.

 

EXPERIMENTE ZOND 265 GRATUITAMENTE

 

Algumas semanas atrás, encontramos um artigo sobre engenheiros do Dropbox recriando o algoritmo Pied Piper de um popular programa de TV. O Dropbox desenvolveu um algoritmo de compactação sem perdas para arquivos H.264 e JPEG, e nossa equipe avaliou essa solução e obteve alguns detalhes tangíveis.

Com meia olhada, percebemos que um arquivo H.264 recompactado deixou de ser H.264 e só poderia ser usado para armazenamento temporário. Além disso, este método de compactação pode ser eficaz sob duas condições: se o arquivo utiliza CAVLC como codificador, ou se o arquivo foi codificado com blocos PU e TU de tamanho máximo. Ambas as condições só podem ser atendidas se o codec H.264 estiver configurado para codificação de velocidade máxima. 

Sobre o projeto Pied Piper

O vídeo é um dos formatos de dados mais pesados , por isso não é surpresa que os serviços de processamento, transferência e armazenamento de vídeo tenham que considerar a compressão como uma solução viável. No entanto, existem algumas opções por aí. Em agosto de 2015, o DropBox revelou sua visão do problema - um algoritmo original, ainda que incompleto, para arquivos de vídeo no padrão H.264. O foco principal da empresa é o armazenamento dos arquivos de seus clientes. Um usuário comum pouco se preocupa com a forma como esses arquivos são armazenados, o que importa é baixar exatamente os mesmos arquivos intactos – da forma como foram carregados. Portanto, o algoritmo DropBox é sem perdas. Além disso, o resultado da compressão não é um arquivo de vídeo do formato de origem.

Nosso artigo tem como objetivo avaliar a eficiência deste algoritmo na compactação de diversos formatos de arquivo. Para tanto, utilizaremos o ZOND 265 da Solveig Multimedia, um analisador de arquivos de vídeo H.264 e H.265, como ferramenta auxiliar.

Você pode baixar todos os arquivos associados a este artigo (o executável do compressor compilado para Linux Ubuntu x64 12.04, arquivos de vídeo de teste) pelo link .
image

Estimando a eficiência do compressor do projeto Pied Piper O código

Fonte e os arquivos de teste do compressor estão disponíveis em GitHub. Para começar, compilaremos um compressor e estimaremos os arquivos de teste. Depois, mediremos a eficácia em relação a arquivos de vídeo reais.

Compressão

Diretrizes específicas para compilação do compressor Pied Piper estão disponíveis apenas para Linux. Na verdade, é um único arquivo - script "piedpiper_make". Portanto, precisamos carregar o Linux Ubuntu x64 e inserir três comandos:

cd./lossless264
./piedpiper_make

Após a compilação, verifique sua pasta atual em busca dos arquivos do compressor:

  • h264dec – o arquivo executável do compressor e descompressor
  • so.0, libopenh264.so – uma biblioteca auxiliar dinâmica e um link para ela.

A compactação se realizada pelo comando:

./h264dec ./arquivo-fonte.264 ./arquivo-destino.pip,

Descompressão:

./h264dec ./arquivo compactado.pip ./arquivo descompactado.264.

Lembre-se de que a saída da compactação não é um arquivo no mesmo formato da fonte, mas uma matriz de arquivos .pip.
 

Arquivos de teste Pied Piper De acordo

Com o repositório Git, a equipe do DropBox utilizou estes arquivos como material de teste: "black.264", "tibby.264", "walk.264", 'BA1_FT_C.264", "BAMQ2_JVC_C.264". Nós os carregamos no Zond 265 e descobrimos que eles foram compactados pelo mesmo método (veja as capturas de tela do Zond 265, guia Bitstream , fotos 1 - 3 para o arquivo "tibby.264"). As principais propriedades dos arquivos são o uso de CAVLC (PPS, entropy_coding_mode_flag: 0) e nenhum B-frames (SPS,max_num_reorder_frames: 0). Escolhemos os três primeiros arquivos para nossos testes de eficiência.

image

Foto. 1. Bloco Sequence Parameter Set (SPS) para arquivo "tibby.264

image

Foto. 2. Bloco de conjunto de parâmetros de imagem para arquivo "tibby.264

image

Foto. 3. Estrutura de fluxo de vídeo para arquivo "tibby.264

Outros arquivos de teste

Os usuários podem empregar diversas ferramentas para obter arquivos de vídeo: gravar um vídeo com uma câmera (por exemplo, em um telefone celular), baixá-lo de vários serviços de vídeo (YouTube, VK, Vimeo, Facebook, etc.) ou usar software com funcionalidade de recodificação.

Selecionamos o arquivo "VID_20150917_131139.264" como um videoclipe comum de celular. Como os exemplos anteriores, ele não contém quadros B, mas usa CABAC em vez de CAVLC como codificador aritmético. O compressor retorna um erro para arquivos do YouTube (eles incluem quadros B e usam CABAC), então deixamos isso para trás em nossa estrutura de testes.

Escolhendo o software habilitado para recodificação, optamos pelo utilitário de console ffmpeg (módulo "libx264"). Avançando, a compressão só é possível com o preset “ultra-rápido”, não revelando nenhum resultado com o preset “super rápido”. Os arquivos de teste são "tractor-ultrafast.264", "tractor-superfast.264".

Além dos arquivos mencionados, a tabela inclui mais três exemplos. Estes últimos são usados para determinar se o algoritmo sugerido manterá a eficiência das opções "CABAC" habilitadas e codificação com blocos PU e TU de tamanho máximo: "black-cabac.264", "tibby-cabac.264" e "tibby-cabac -max-blocos".
 

Resultado dos testes

Os resultados do teste são exibidos nas Tabelas 1 e 2. Os dados quantitativos para os blocos PU e TU foram coletados usando o software Zond 265 (guiaStream Stats ). Foto. 4 revela uma captura de tela dos dados do arquivo “tibby.264”.

image

Foto. 4. PU e TU bloqueiam dados para o arquivo "tibby.264

Tabela 1. Compressor Pied Piper . Resultados de testes de eficiência.

image

Tabela 2. Compressor Pied Piper . Resultados de testes de eficiência.

image

 Como as tabelas acima indicam, a versão atual do algoritmo Pied Piper funciona apenas em dois cenários: se um arquivo usa CAVLC como codificador ou se o arquivo é codificado com blocos PU e TU de tamanho máximo. Esses cenários exigem codificação de velocidade máxima de um codec H.264. Aparentemente, tudo isso se resume a arquivos bem grandes. Esses são os arquivos criados pelo codec ffmpeg com libx264, predefinição "ultrafast" ativada.

É isso por enquanto. Agradecemos o tempo gasto para realizar esta pesquisa com nossa equipe. Aguardamos seu feedback!

 

EXPERIMENTE ZOND 265 GRATUITAMENTE

 

 

 About the author

imageOlga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.

She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.

She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!