Qual compactação de arquivo torna os arquivos .mp4 os menores?

Qual compactação de arquivo torna os arquivos .mp4 os menores?

Existe um formato de compactação baseado em arquivo conhecido por produzir os menores vídeos .mp4?

Fiz um vídeo de teste com duração de 1080p e 0:12 com os únicos formatos de arquivo que conheço:

(python3) Joshs-MBP:testing_movie mu$ ls -lS
total 12712
-rw-r--r--  1 mu  staff  2145528 Jun  6 09:26 testing.mov
-rw-r--r--  1 mu  staff  1790044 Jun  6 09:26 testing.mov.zip
-rw-r--r--@ 1 mu  staff  1789512 Jun  6 09:25 testing.mov.gz
-rw-r--r--  1 mu  staff   775138 Jun  6 09:26 testing.mov.bz2

Parece que bzip2é o melhor. Existe mais alguma coisa que seja melhor em termos de diminuir os arquivos? Tudo bem se demorar muito mais.

Além disso, percebi que você não pode criar bzip2um diretório.

Responder1

Primeiro, um pequeno aparte sobre a terminologia: ZIP é o únicoarquivoformato que você usou. Gzip e Bzip2 são formatos de compactação, não formatos de arquivo. Para ser um pouco mais específico:

  • Um formato de arquivo agrega vários arquivos e/ou diretórios, geralmente incluindo metadados como propriedade, carimbos de data/hora e possivelmente outros dados, em um único arquivo. Tar é um exemplo de formato de arquivo puro, não faz compactação inerente,

  • Um formato de compactação apenas compacta dados, mas não combina inerentemente vários arquivos em um. Gzip, Bzip2, Brotli, LZ4, LZOP, XZ, PAQ e Zstandard são todos formatos de compactação. Alguns deles (como Gzip e LZ4) podem suportar a compactação de vários arquivos e concatená-los em um arquivo que pode então ser descompactado em vários arquivos originais (que é o que acontece quando você compacta um diretório), mas eles não armazenam caminhos ou outros metadados, portanto não são formatos de arquivo.

Alguns formatos, como ZIP, 7z ou RAR, combinam arquivamento e compactação (embora o ZIP também possa armazenar arquivos descompactados).

Agora, com isso resolvido, vamos passar para sua questão principal:

O comentário de music2myear está correto. Seus resultados irão variar muito dependendo das especificações exatas da codificação MP4 usada. Isso ocorre porque o próprio MP4 inclui compactação de dados, neste caso otimizado para compactar dados de áudio e vídeo sem diminuir significativamente a qualidade percebida. Os processos que utiliza para isso são na verdade um pouco complicados (demasiado complicados para explicar aqui), mas devido à restrição de não diminuir a qualidade percebida, combinado com o facto de comprimir quadro a quadro em vez de como um único longo stream, às vezes há espaço significativo para melhorias (como você pode ver no seu teste).

Agora, embora eu não possa dar uma resposta conclusiva sem muitos detalhes adicionais, posso dar alguns conselhos gerais sobre compactação de arquivos:

  • ZIP e Gzip apresentam resultados muito semelhantes neste caso porque utilizam variantes do mesmo algoritmo de compressão, mais especificamente um derivado do algoritmo LZW conhecido como DEFLATE. DEFLATE não é um algoritmo de compactação particularmente bom, mas é onipresente (existem até implementações de hardware dele), por isso é frequentemente usado como padrão de comparação. Fora do uso como componente de outros formatos de arquivo (como ZIP), não é mais amplamente utilizado para armazenamento. Praticamente qualquer coisa baseada em DEFLATE (ou LZW em geral) não vai ganhar em nenhum aspecto ao comparar algoritmos de compressão.

  • O Bzip2, por outro lado, faz algumas transformações complexas nos dados para torná-los compactados com mais eficiência e, em seguida, usa a codificação Huffman para a compactação real. Na maioria dos casos, ele comprime melhor que os compressores baseados em DEFLATE, mas também é mais lento que o DEFLATE. Devido a algumas suposições feitas sobre como ele transforma os dados de entrada antes da codificação de Huffman, também é um pouco mais sensível do que muitas outras opções de como os dados de entrada são estruturados.

  • XZ usa um algoritmo diferente chamado LZMA. Assim como o algoritmo LZW do qual o DEFLATE é derivado, o LZMA é, em última análise, derivado de um algoritmo conhecido como LZ77, embora obtenha taxas de compactação incrivelmente melhores do que as opções baseadas em DEFLATE e taxas significativamente melhores do que o Bzip2 na maioria dos casos. Além do LZMA, ele faz algumas transformações que o tornam um pouco melhor na compactação de executáveis ​​do que as outras opções. O custo disso, entretanto, é que leva muito tempo para compactar os dados. O 7zip também usa LZMA, mas sem as transformações de dados, por isso muitas vezes não é tão bom em termos de proporções quanto o XZ.

  • LZOP usa o algoritmo LZO e geralmente compacta pior que DEFLATE, mas funciona muito mais rápido. Assim como o Gzip, ele não é mais amplamente utilizado, pois as pessoas tendem a preferir alternativas que proporcionem uma melhor taxa de compactação ou melhor desempenho.

  • LZ4 é um padrão mais recente desenvolvido pelo Google que funciona incrivelmente rápido (próximo à velocidade da largura de banda da memória para descompressão), mas obtém taxas de compactação ainda piores que o LZO. Ele vem suplantando lentamente o LZO, já que a maioria das coisas que usavam o LZO o usavam para obter velocidade.

  • Brotli é outra novidade do Google. Faz parte do padrão HTTP/2 e é otimizado especificamente para streaming e pode obter melhores taxas de compactação e desempenho do que as opções baseadas em DEFLATE. No entanto, não é amplamente suportado para compactação simples de arquivos, portanto pode não ser uma opção viável para seu uso.

  • PAQ é para aqueles que estão realmente preocupados em maximizar as taxas de compressão. Ele usa uma combinação complexa de modelos estatísticos para obter taxas de compactação absolutamente malucas (dependendo dos dados originais, não é incomum que um arquivo compactado com PAQ sejamenos de 1/10do tamanho original, enquanto DEFLATE tem uma média mais próxima de 1/2). O custo disso é, claro, que leva um tempo absurdamente longo para comprimirqualquer coisacom PAQ. Com as configurações de alta compactação, provavelmente levaria pelo menos meia hora para compactar aquela amostra de vídeo com o PAQ. Devido ao tempo que leva, quase ninguém usa o PAQ, e os poucos que o fazem raramente o usam para qualquer outra coisa que não seja para fins de arquivamento (ou seja, eles só o usam em arquivos que provavelmente nunca serão alterados).

  • Zstandard é o mais novo de todos e foi desenvolvido pelo Facebook. Ele usa uma mistura de métodos mais antigos e mais novos (incluindo algumas técnicas de aprendizado de máquina) para obter taxas de compactação comparáveis ​​ou melhores que o bzip2 (e às vezes até melhores que o XZ), enquanto roda significativamente mais rápido que a maioria dos outros que listei exceto LZ4. Provavelmente não superaria o XZ em seu uso (e definitivamente não superaria o PAQ), mas pode obter proporções boas o suficiente para que o desempenho significativamente melhor valha a pena.

informação relacionada