gzip, bzip2 e zip: taxa de compressão muito baixa

1

Eu preciso transferir (via ftp) alguns arquivos de filme (.MPG) para a máquina remota. Eu pensei em primeiro comprimir e depois enviar. Mas todos os utilitários de compressão (gzip, bzip2 e zip) estão tendo uma taxa de compactação muito menor. Por exemplo:

ravbholua@ravbholua-Aspire-5315:~/Desktop/MAIL/SNEHAMILAN$ gzip -l MOV04042.MPG.gz
         compressed        uncompressed  ratio uncompressed_name
           61949207            66970629   7.5% MOV04042.MPG
ravbholua@ravbholua-Aspire-5315:~/Desktop/MAIL/SNEHAMILAN$

Como você vê aqui, menos compactação. O mesmo acontece com o bzip2 e o zip. Por favor, sugira qualquer utilitário de compressão melhor para que eu possa compactar arquivos de filmes de 400 MB em uma boa extensão e, em seguida, ftp-lo. O que eu faria é: 1º eu colocaria todos os arquivos do filme e depois os compactaria para o ftp na máquina remota.

    
por Ravi 20.09.2013 / 09:17

3 respostas

19

A maioria dos formatos / codificações de filmes (e formatos de imagem também) já estão compactados. Você não pode compactá-los muito mais adicionando uma segunda camada de compactação - o mesmo que se tentasse compactar um arquivo compactado com o bzip2 (ou vice-versa).

Você não encontrará um algoritmo de compactação sem perdas que comprimirá esses arquivos muito mais. Na verdade, você pode até acabar com arquivos compactados um pouco maiores do que o original em alguns casos.

Sua melhor chance de compactar ainda mais os arquivos de mídia é recompactar o áudio e o vídeo com codificadores mais eficientes. Sua extensão .mpg sugere que você está usando o MPEG-2 agora, por exemplo, então você pode tentar mudar para H.264 ou VP8 / WebM . Você também pode tentar alterar os parâmetros do codificador existente para obter arquivos menores, trocando alguma qualidade por um arquivo menor. Você provavelmente gastará mais tempo na codificação do tempo de CPU do que em uma única transferência de arquivos, mas pode valer a pena fazê-lo se você for transferir esses arquivos várias vezes.

    
por 20.09.2013 / 09:31
2

A maioria das compactações sem perdas (como os algoritmos usados em gzip, bzip2 e zip) funciona eliminando séries repetidas de bytes em um arquivo. Como um exemplo inventado, digamos que seu arquivo tenha várias instâncias de 100 espaços: uma versão compactada do arquivo pode criar um código muito curto, o que significa 100 espaços, e substituir essas instâncias por isso.

O problema é que, para que isso funcione, o arquivo precisa ter um número considerável de seqüências repetidas de bytes. A maioria dos arquivos comuns funciona, e é por isso que a compactação geralmente funciona bem, mas os arquivos compactados geralmente não funcionam (isto é, afinal de contas, o ponto de compactação). É por isso que a compactação dupla geralmente não funciona muito bem: depois de compactar um arquivo uma vez, você já removeu a maioria das coisas que o tornavam compactável. Curiosamente, é possível criar arquivos que a compactação realmente tornaria maior , mas, do ponto de vista realista, arquivos como esse não ocorrem com muita frequência.

A compactação com perdas não é tão diferente, na verdade. Em seu sentido mais simples, ele altera o arquivo de certas maneiras para torná-lo mais compacto, mas ele tenta fazer isso de maneiras que o usuário não notará. Na compressão de áudio, estes são chamados algoritmos psicoacústicos , porque se trata de mudar o áudio de uma forma que a mente humana não detecta; Eu suponho que há uma palavra semelhante para compressão de vídeo, mas não sei o que é. De qualquer forma, depois que eles fazem esses truques para tornar o arquivo mais compressível, eles o comprimem da maneira usual. Mas isso significa que os arquivos com perdas excessivas também não possuem muitas das coisas que os algoritmos sem perdas procuram.

Por causa disso, eu tenho medo que você esteja sem sorte. A resposta de @ WarrenYoung pode funcionar se você tiver acesso ao vídeo original, mas se você tiver apenas esses arquivos .mpg, precisará ter cuidado ao recodificá-los: você não quebrará o arquivo nem nada, mas os resultados pode não parecer tão bom quanto se você tivesse começado com o arquivo original. Diferentes algoritmos com perdas descartam diferentes tipos de dados, mas os efeitos de fazer isso podem se acumular e se tornar perceptíveis. Quando terminar de codificar novamente, você deve observar o arquivo para garantir que ele ainda esteja com boa aparência.

    
por 20.09.2013 / 13:27
0

Existem alguns formatos de compactação mais eficientes disponíveis (como ZPAQ , PEA ou KGB , veja a Wikipedia PAQ artigo, mas eles vêm à custa do tempo de processamento.

Como Mat apontou, é duvidoso que eles comprimam ainda mais o seu filme (já compactado).

    
por 20.09.2013 / 10:03