Os detalhes da compactação sem perdas DropBox H.264
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.
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:
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.
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.
Foto. 1. Bloco Sequence Parameter Set (SPS) para arquivo "tibby.264
Foto. 2. Bloco de conjunto de parâmetros de imagem para arquivo "tibby.264
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".
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”.
Foto. 4. PU e TU bloqueiam dados para o arquivo "tibby.264
Tabela 1. Compressor Pied Piper . Resultados de testes de eficiência.
Tabela 2. Compressor Pied Piper . Resultados de testes de eficiência.
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
Olga 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!