La compression des vidéos crée un fichier encore plus grand

17

J'ai utilisé l'interface graphique (clic droit => compresser) pour essayer de compresser un .tar contenant 3 vidéos totalisant 1,7 Go (.H264 MP4). gzip, lrzip, 7z etc. ne font rien à la taille du fichier et le dossier compressé est également de 1,7 Go.

J'ai ensuite essayé d'exécuter lrzip à partir de la ligne de commande (au cas où c'était un problème de GUI), et j'ai utilisé l'indicateur -z (compression extrême), et c'était ma sortie.

entrez la description de l'image ici

Comme le montre le taux de compression, la taille réelle du dossier compressé est plus grande que l'original! Je ne sais pas pourquoi je n'ai pas de chance, lrzip en particulier devrait être efficace selon les critiques aléatoires que j'ai lues et les documents officiels (fichiers de plus de 100 Mo, plus ils sont grands, mieux c'est) - voir https: //wiki.archlinux. org / index.php / Lrzip

Pourquoi ne puis-je pas compresser mes fichiers?

Lee
la source
2
Personnellement, je ne vais pas déranger l'archivage de vidéos mp4 car ces vidéos sont déjà compressées par le codec.
landau
Et vous pouvez réduire la taille en utilisant des outils de conversion / compression vidéo comme FFMpeg .
Jet
landau et Jet sont corrects. Il s'agit d'un comportement attendu. Il est contre-productif d'essayer de compresser quelque chose qui est déjà bien compressé. Si vous utilisez des outils de conversion vidéo, vous pourrez peut-être économiser de l'espace au détriment de la qualité de la vidéo (apparente ou non). Commencez cependant par la copie la moins compressée de la plus haute qualité dont vous disposez.
John S Gruber

Réponses:

25

Comme @pram l'a dit plus haut dans le commentaire, les vidéos mp4 sont déjà compressées, et d'autres formats vidéo utilisent probablement aussi la compression dans une certaine mesure. Par conséquent, essayer de les compresser n'entraînera pas une faible (voire aucune) réduction de la taille (cela s'applique également, au moins en partie, aux images et à la musique). Dans ce cas, il semble que les métadonnées (pour le fichier compressé lui-même) soient à l'origine de l'augmentation. Le seul format de compression qui pourrait (et c'est un fort pouvoir) entraîner une certaine réduction est xz.

Sur une autre note, si vous souhaitez réduire la taille de ces vidéos, essayez plutôt de ré-encoder les vidéos en utilisant quelque chose comme Handbrake.

saiarcot895
la source
3
Je trouve que webm a de bons taux de compression en général. Beaucoup plus petit que mp4.
Seth
@Seth MP4 (qui est soit AVC aka h.264 ou le codec plus récent et meilleur h.265 aka HEVC) donne des fichiers plus petits avec la même qualité (ou une meilleure qualité avec la même taille de fichier).
David Balažic
@ DavidBalažic nous comparons des pommes et des pommes ici, quand nous essayons de parler d'oranges. mp4 et webm sont tous deux des conteneurs, ils n'ont rien à voir avec la compression. Vous avez raison de dire que h.264 et h.265 sont tous deux des codecs couramment utilisés dans les conteneurs mp4, mais vous ne pouvez pas comparer h.265 à webm . h.264 est comparable au codec vp8 couramment utilisé dans les conteneurs webm, tout comme h.265 est comparable au codec vp9, également généralement contenu par webm. tl; dr: utilisez h.265 en mp4 et vp9 en webm et vous obtiendrez à peu près la même qualité / efficacité.
forresthopkinsa
13

Vraiment, le fait que les fichiers soient déjà compressés n'est pas le problème crucial. C'est cela: la compression en général ne peut fonctionner que si les données contiennent une sorte de redondance . C'est pratiquement toujours le cas pour les fichiers non compressés - cependant, ce n'est pas forcément évident que la redondance est. Les algorithmes de compression à usage général ciblent principalement le genre de chose évidente dans les fichiers texte: de nombreux mots apparaissent non seulement une fois mais beaucoup de fois sous une forme identique, peut-être que des phrases de mots peuvent être combinées, etc. etc. Les algorithmes sont assez bons dans généralisant cela à n'importe quoi, des listes de numéros de téléphone encodés en ASCII sur la poésie chinoise au code machine binaire, mais ils ne peuvent pas fonctionner pour n'importe quel type de données. En particulier, les fichiers multimédias sont conceptuellementdonnées analogiques , dans une représentation numérique bruyante. Cela signifie qu'il n'y a pas du tout de type de redondance de fichier texte: certains motifs peuvent être récurrents, mais toujours avec une configuration légèrement différente du bruit du capteur. C'est pourquoi tous les formats d'image / AV compressés utilisent une transformation intelligemment choisie comme première étape d'encodage, normalement basée sur DCT ou ondelettes . Ces transformations déplacent grosso modo les parties d'image et les parties de bruit dans des emplacements différents, de sorte qu'elles peuvent être séparées et avec une compression avec perte, vous ne conservez que les informations que vous pensez être les plus "importantes", qui n'incluent pas le bruit, tandis que le " bonne information "a beaucoup de redondance. (Ce n'est pas vraiment comment cela fonctionne, mais en quelque sorte.)

Si les compresseurs à usage général utilisaient ces transformations, l'effet serait le contraire: la plupart des informations numériques seraient en fait classées à tort comme une sorte de bruit, car elles n'ont pas la structure "lisse" que vous trouvez dans les signaux analogiques. Et après une compression vidéo avec perte, il est évident que ni la fluidité analogique ni la récurrence numérique ne peuvent plus être trouvées (si c'était le cas, les codecs utiliseraient un autre étage bzip ou quelque chose d'eux-mêmes!)

à gauche
la source
12

La raison pour laquelle vous n'avez pas de chance est que mp4 est déjà compressé, vous ne pouvez pas le compresser davantage. Tout ce que vous faites est d'ajouter les informations d'en-tête du format de compression au fichier.

Étant donné que les fichiers sont déjà compressés et que vous ne pouvez pas les compresser davantage, cela entraîne une augmentation de la taille du fichier car tout ce que vous faites est de conserver les mêmes informations et d'ajouter quelques octets supplémentaires d'informations d'en-tête.

terdon
la source
5

Ceci est un bel exemple du principe du pigeonnier .

Étant donné que le fichier est déjà compressé (avec perte), il n'y a pas ou peu de réduction nulle part, ce qui signifie que vous êtes déjà à un gain net nul. Comme les autres l'ont mentionné, le format compressé lui-même a une certaine perte, généralement négligeable, dans ses propres métadonnées. Tout cela se conjugue signifie qu'il n'y a probablement plus de trou de pigeon dans l'ensemble de fichiers égaux ou plus petits et donc vos données compressées tombent dans l'ensemble de fichiers plus grands.

Livius
la source
4
Je suis désolé, mais c'est une mauvaise application de ce principe. Vous pouvez appliquer la même logique à un fichier de 1,7 Go rempli de zéros et obtenir une réponse incorrecte. Le principe du pigeonhole est généralement utilisé pour prouver l' existence de fichiers non compressibles, pas pour prouver qu'un fichier particulier est réellement incompressible. (Ce dernier n'est pas calculable, car la fonction de complexité de Kolmogorov n'est pas une fonction calculable).
nneonneo
1
@nneonneo Alors n'hésitez pas à corriger l'article Wikipédia lié. L'existence de fichiers incompressibles en découle directement, puis vous ajoutez les métadonnées de compression et soudain, vous avez un fichier plus grand que l'original. C'est exactement ce que j'ai dit. La preuve que le fichier n'est plus compressible sous une implémentation donnée d'un algorithme donné est que la sortie n'est pas plus petite. Bien sûr, il est également possible que les métadonnées soient tout simplement plus grandes que la victoire de compression, mais je ne suis pas sûr d'avoir décrit cela comme compressé dans le sens de l'utilisateur.
Livius
@Livius L'article de wikipedia est correct: il utilise le principe du pigeonhole pour prouver l' existence de fichiers non compressibles pour tout algorithme de compression sans perte donné. Mais vous ne pouvez pas dériver l'incompressibilité d'un fichier particulier uniquement à partir du principe du pigeonhole.
David Richerby
@DavidRicherby Oui, mais le fait que le fichier ne soit pas compressé par une implémentation donnée d'un algorithme donné est la preuve qu'il n'est pas compressible. Sauf s'il existe d'autres raisons à l'existence de fichiers incompressibles, il s'ensuit que l'échec de la compression est dû au PP. La seule autre raison possible serait parce qu'un algorithme donné ne voit aucun moyen de réduire sa taille, ce qui semble encore être un cas de "sous les hypothèses de l'algorithme, il n'y a pas de fichier plus petit avec les mêmes informations; de tels cas existent nécessairement à cause du PP ".
Livius
Plus précisément, le PP oblige l'algorithme à avoir des entrées dont l'image ne se trouve pas dans l'espace de fichiers plus petits. Chaque décision qui conduit à ce que l'image d'un fichier donné ne rentre pas dans cet espace est donc à un certain niveau entraînée par le PP et les compromis qu'il force (en supposant une définition saine de l'algorithme de compression). Ensuite, tout fichier dont l'image n'est pas plus petite appartient à l'ensemble que le PP a exclu d'être compressible. La preuve qu'un fichier donné n'est pas compressible est son échec de compression; au sens large, l'incompressibilité est toujours le résultat du PP et de ses compromis.
Livius
4

Si vous souhaitez compresser ces fichiers, vous devrez réduire la qualité.

Sans savoir combien de temps et quel format et type de contenu ces fichiers sont difficiles à dire si ces fichiers peuvent être réduits sans perte de qualité visible.

Les BluRays avec vidéo 1080p ont tendance à être supérieurs à 25 Go, il n'est donc pas improbable que vous soyez déjà à un rapport qualité / taille optimal pour H.264.

Vous pouvez essayer d'utiliser ffmpegou avconvde convertir des fichiers.

Vous pourriez commencer par ffmpeg -i input_file.mp4 -preset slower -crf 20 -c:a copy output_file.mp4

La anconvcommande fonctionnera de la même manière.

  • Augmentez la -crfvaleur pour diminuer la taille et la qualité du fichier, je ne recommande pas plus de 25.

  • Vous pouvez modifier le préréglage sur slowou mediumpour augmenter la vitesse, mais la taille de votre fichier en souffrira par rapport à slowerou même veryslow(si vous êtes très patient!).

  • Plus de paramètres peuvent être trouvés ici: http://mewiki.project357.com/wiki/X264_Settings

  • Je recommande de rester loin de la plupart car les préréglages fournissent des valeurs par défaut raisonnables, à -tunel'exception de ceux-ci.

  • Essayez un débruiteur si votre contenu est un film ( -vf hqdn3d), vous pouvez améliorer la qualité visuelle par rapport à l'utilisation d'une -crfvaleur élevée .

  • Réduisez votre contenu -vf scale=-1:720pour 720p et -vf scale=-1:480480p pour améliorer la vitesse d'encodage et maintenir la qualité.

Daniel Hill
la source