Quels paramètres de compression vidéo H.264 / H.265 offrent une qualité équivalente à DVD avec une meilleure compression?

11

J'ai une boîte de disques vidéo DVD dont je cherche à me débarrasser tandis que j'aimerais conserver les vidéos en les convertissant en fichiers MP4 pour les stocker sur un disque dur.

Compte tenu de la supériorité des algorithmes de compression H.264 AVC et H.265 HEVC modernes sur le MPEG2 standard DVD, j'espère économiser de l'espace sur le disque dur en compressant la vidéo tout en économisant environ 99% de la qualité originale du DVD.

Quoi

  • Paramètres de compression H.264 (FFMPEG + libx264)
  • Paramètres de compression H.265 (FFMPEG + libx265)

dois-je utiliser pour atteindre mon objectif?

Par paramètres, je veux dire les valeurs CBR / CRF, le préréglage (pas très lent / placebo s'il vous plaît), les drapeaux, etc.

PS: Je préfère limiter le cas avec l'utilisation -pix_fmt yuv420pet -profile:v baseline -level 3.0garantir que le fichier fonctionne correctement sur tous les appareils, y compris les anciens appareils reposant sur d'anciennes puces de décodeur matériel. Il -gest également souhaitable d' utiliser une fréquence d'images I légèrement augmentée (en utilisant le paramètre) pour faciliter l'utilisation des supports à faible vitesse et à latence élevée.

Pour HEVC, je préférerais aussi utiliser des paramètres qui assureraient une lecture accélérée matérielle en douceur sur les appareils qui le prennent en charge, mais je ne veux pas me concentrer sur cette contrainte car je n'ai vu aucun appareil offrant le H.265 accéléré par matériel. décodage du tout encore.

Ivan
la source

Réponses:

14

Notez que pour cela, vous devez toujours utiliser la dernière version de ffmpeg , et de préférence la compiler vous-même . Cela vous donne accès aux libx265 et libfdk-aac les plus récents pour l'encodage audio.

En outre, les économies de débit de données seront assez drastiques si vous passez d'un DVD de ~ 10 Mo / s à environ 1 à 2 Mo / s pour la vidéo H.264 et 0,5 à 1 Mo / s pour la vidéo H.265. La modification de la qualité dans les étapes ci-dessous peut influencer les débits binaires, mais la réduction des données doit néanmoins être significative.

H.264

Pour le contrôle qualité / débit, vous souhaitez utiliser le mode CRF dans libx264 plutôt qu'un débit binaire constant. L'utilisation de CRF garantit la conservation d'une qualité moyenne, indépendamment de la résolution vidéo d'origine ou de sa complexité. Le débit binaire constant n'est vraiment utile que si vous êtes contraint par le support de transmission (par exemple, la vitesse du disque dur, le débit Internet).

Le choix de la valeur CRF est la partie délicate. Cela vous oblige à regarder la sortie. La valeur par défaut de libx264 (23) offre un assez bon compromis entre taille et qualité. Mais étant donné que votre source d'origine est déjà compressée (et pas avec une très bonne qualité par rapport aux Blu-ray), vous voudrez peut-être changer le CRF pour qu'il soit un peu plus bas, comme 20. Cela augmentera le débit requis d'environ un tiers .

Choisissez le préréglage en fonction du temps que vous souhaitez attendre. slowsemble être une bonne valeur ici.

ffmpeg -i input \
-c:v libx264 -crf 20 -pix_fmt yuv420p \
-x264-params keyint=240:min-keyint=20 \
-preset:v slow -profile:v baseline -level 3.0 \
-c:a libfdk_aac -vbr 4 \
output.mp4

L'encodeur AAC ffmpeg intégré peut être utilisé si libfdk-aac n'est pas disponible. Utilisez -c:a aac -strict experimental -b:a 128kau lieu de -c:a libfdk_aac -vbr 4.

H.265

La recherche suggère que l'utilisation de HEVC entraînera jusqu'à 74% d'économie de débit binaire par rapport au H.264. Ceci est basé sur des données de visualisation subjectives de séquences Ultra-HD. Bien sûr, cela dépend de la complexité temporelle du contenu source, et la quantité de données enregistrées ne sera pas aussi élevée pour les séquences difficiles à coder. Quoi qu'il en soit, vous pouvez dire en toute sécurité qu'une réduction de 50% des données est absolument possible.

Le CRF par défaut pour libx265 est 28. En utilisant le même contenu source, il en résulte environ la moitié du débit par rapport à libx264 au CRF 23. Ceci est indépendamment du débit réel, c'est-à-dire, si la version H.264 prend 1,5 MBit / s, alors H.265 utilisera environ 750 kBit / s, mais c'est 750 kBit / s contre 350 kBit / s pour une autre séquence. Je l'ai exécuté sur quelques séquences en résolution DVD-PAL et je n'ai pas pu faire la différence en termes de qualité.

ffmpeg -i input \
-c:v libx265 -pix_fmt yuv420p \
-x265-params crf=28:keyint=240:min-keyint=20 \
-preset:v slow \
-c:a libfdk_aac -vbr 4 \
output.mp4

Pour plus d'informations, voici les ressources pertinentes:

slhck
la source
Merci pour une bonne réponse. Que signifie Keyint pratiquement d'ailleurs?
Ivan
1
Le keyinten x264 / x265 est l'intervalle entre les images IDR, c'est-à-dire l'intervalle entre les images clés auquel le décodeur peut rafraîchir. Entre les deux, il peut y avoir des images I autres que des images clés, par exemple lorsqu'une scène est coupée. C'est équivalent au -gparamètre si je ne me trompe pas.
slhck
BTW, @slhck, une chose qui m'a surpris dans votre réponse - l'attention que vous portez au choix d'une bibliothèque d'encodage AAC. Je pensais qu'ils sont tous presque identiques et ne donnent que peu ou pas de différence, que les choses sont simples dans la partie audio (choisissez simplement le débit binaire et allez-y et que tous les principaux codecs avec perte comme MP3, AAC et Vorbis sonnent presque ou exactement même à 128 kbps et plus). Voulez-vous dire qu'il y a réellement une différence notable entre libfdk-aac et aac ordinaire?
Ivan
1
@Ivan Les builds Zeranoe devraient certainement vous permettre de faire -c:a aac -strict experimentalcomme indiqué dans ma réponse. Et je suis d'accord, je n'essaierais pas de le construire sur Windows.
slhck
2
@Ivan (1er commentaire): Voir ffmpeg-wiki : "Basé sur la qualité produite de haut en bas: libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= libfaac >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1Pour AAC uniquement: (Parce que c'est un peu déroutant, avec 3 encodeurs disponibles): libfdk_aac > aac > libfaacLe signe> = signifie plus grand ou le même qualité."
Golar Ramblar