web-dev-qa-db-fra.com

La compression de vidéos crée un fichier encore plus volumineux

J'utilisais l'interface graphique (clic droit => compresser) pour essayer de compresser un fichier .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é fait également 1,7 Go.

J'ai ensuite essayé d'exécuter lrzip à partir de la ligne de commande (s'il s'agissait d'un problème d'interface graphique) et d'utiliser l'indicateur -z (compression extrême), ce qui a été mon résultat.

enter image description here

Comme le montre le taux de compression, la taille réelle du dossier compressé est supérieure à celle de l'original! Je ne sais pas pourquoi je n'ai pas de chance, lrzip en particulier devrait être efficace en fonction des examens aléatoires que j'ai lus et de la documentation officielle (fichiers de plus de 100 Mo, plus le fichier est grand, mieux c'est) - voir https: // wiki.archlinux.org/index.php/Lrzip

Pourquoi ne puis-je pas compresser mes fichiers?

17
Lee

Comme @pram a indiqué plus haut dans le commentaire, les vidéos mp4 sont déjà compressées et d'autres formats vidéo utilisent probablement également la compression dans une certaine mesure. Par conséquent, essayer de les compresser n'entraînera que peu (voire aucune) réduction de 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) puissent être à l'origine de l'augmentation. Le seul format de compression qui peut-être (et c'est une force majeure) entraîne une certaine réduction est xz.

Sur une autre note, si vous souhaitez réduire la taille de ces vidéos, envisagez plutôt de les réencoder à l'aide de quelque chose comme Handbrake.

25
saiarcot895

En réalité, le fait que les fichiers soient déjà compressés n’est pas un problème crucial. C'est ceci: la compression en général ne peut fonctionner que si les données comportent une sorte de redondance . C'est pratiquement toujours le cas pour les fichiers non compressés - cependant, ce n'est pas évident ce que est la redondance. Les algorithmes de compression polyvalents visent principalement le genre de chose évidente dans les fichiers texte: de nombreux mots ne sont pas présents une seule fois mais plusieurs fois sous une forme identique, des phrases pouvant être combinées, etc. peuvent être combinées. généralisant cela en quelque chose, des listes de numéros de téléphone codées en ASCII en passant par la poésie chinoise au code machine binaire, mais elles ne peuvent probablement pas fonctionner pour aucun type de données. En particulier, les fichiers multimédia sont conceptuellement des donné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, généralement basée sur DCT ou ondelettes . Ces transformations déplacent grosso modo les portions d'image et les portions de bruit dans différents emplacements. Elles peuvent ainsi être séparées. Avec la compression avec pertes, vous ne conservez que les informations que vous jugez les plus "importantes", ce qui n'inclut pas le bruit, 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 opposé: la plupart des informations numériques seraient en fait classées à tort dans une sorte de bruit, car elles manquaient de la structure "lisse" trouver en signaux analogiques. Et après une compression vidéo avec perte de données, on ne peut plus trouver ni finesse analogique ni récurrence numérique (sinon, les codecs utiliseraient une autre étape bzip ou quelque chose d’eux-mêmes!)

13
leftaroundabout

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.

Comme les fichiers sont déjà compressés et que vous ne pouvez plus les compresser, cela se traduit par une augmentation de la taille du fichier, car vous ne gardez que les mêmes informations et vous ajoutez quelques octets de plus d'informations d'en-tête.

12
terdon

Ceci est un bel exemple du principe principe du casier .

Comme le fichier est déjà compressé (avec perte), il n’ya pratiquement pas de réduction nulle part, ce qui signifie que vous êtes déjà à zéro gain net. Comme les autres l'ont mentionné, le format compressé lui-même présente une certaine perte, généralement négligeable, dans ses propres métadonnées. Tout cela concourt à dire qu'il ne reste probablement plus aucun casier dans l'ensemble des fichiers égaux ou plus petits et que vos données compressées entrent dans l'ensemble des fichiers plus volumineux.

5
Livius

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

Sans savoir combien de temps, quel format et quel type de contenu ces fichiers sont difficiles à déterminer, il est difficile de réduire ces fichiers sans perte de qualité visible.

Les BluRays avec vidéo 1080p ont tendance à dépasser les 25 Go. Il n’est donc pas improbable que vous obteniez déjà un rapport qualité/taille optimal pour le H.264.

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

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

La commande anconvfonctionnera de la même manière.

  • Augmentez la valeur -crf pour réduire la taille et la qualité du fichier. Je ne vous en recommande pas supérieur à 25.

  • Vous pouvez changer le préréglage en 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 à l'écart de la plupart car les préréglages fournissent des valeurs par défaut saines, à l'exception de -tune.

  • Essayez un dénoiseur si votre contenu est film (-vf hqdn3d) vous pouvez améliorer la qualité visuelle par rapport à l’utilisation d’une valeur -crf élevée.

  • Réduisez votre contenu -vf scale=-1:720 pour 720p et -vf scale=-1:480 pour 480p pour améliorer la vitesse de codage et maintenir la qualité.

4
Daniel Hill