Le profil HEVC MP4 produit des fichiers beaucoup plus volumineux qu'auparavant

Salut à tous,

Il y a environ un mois, j’ai commencé à utiliser le profil « HEVC MP4 » pour convertir des fichiers WTV ainsi que pour reconvertir des fichiers H264 déjà convertis. Au début, j’ai été impressionné par les fichiers résultants qui étaient bien plus petits que prévu. Cela a duré un moment jusqu’à ce que je mette à jour MCEBuddy vers la version 2.5.5 et que je remplace ma carte graphique Gigabyte GV-N630D3 par une GeForce GTX 1650. À l’heure actuelle, j’obtiens encore des fichiers plus petits qu’avec les profils H264, mais ils ne sont plus aussi compacts qu’au tout début du passage au profil « HEVC MP4 ».

Par exemple : pour une vidéo WTV de 29,25 min, je l’ai convertie en un fichier mp4 H264 de 205 Mo, puis j’ai pu la reconvertir en un fichier H265 de 53 Mo, mais à présent je ne peux la réduire qu’à environ 125 Mo. Les trois fichiers mp4 ont la même résolution et, à première vue, la qualité vidéo est quasi identique.

Encore plus étrange : en passant d’une vidéo H264 (profil MP4 Haute Qualité) à une vidéo H265 (profil HEVC MP4), la réduction de taille est négligeable, passant de 693 Mo à 677 Mo, alors qu’auparavant on descendait autour de 450 Mo.

Je sais qu’on est censé obtenir une réduction d’environ 50 % en convertissant du H264 vers le H265. J’étais vraiment ravi de la forte réduction constatée au début et j’aimerais pouvoir y parvenir à nouveau pour économiser un maximum d’espace sur mes disques.

Quelqu’un peut-il m’aider à comprendre ce qui se passe et résoudre mon problème ? Que diable est-ce que je rate ?

Merci beaucoup !!!

Consultez mon MCEBuddy.log

Je peux fournir des fichiers d’exemple si besoin.

Avez-vous par hasard utilisé un encodage logiciel avant et maintenant l’accélération GPU ? Je pose la question car mon premier encodage HEVC a été fait en logiciel et a duré de nombreuses heures, mais le fichier était petit… environ 700 Mo pour un film. Le lendemain, j’ai acheté une carte vidéo capable de faire de l’HEVC, une ASUS GeForce 1650 pour être précis, et j’ai ré-encodé le même fichier ; même s’il restait nettement plus petit qu’en H.264, il était presque 2,5 fois plus gros que l’encodage logiciel.

Je n’ai jamais trouvé d’explication à cette différence et je ne l’ai obtenue de personne. Je partage juste mon expérience car elle ressemble à la vôtre.

Permettez-moi de vous mettre en garde contre les pièges de l’HEVC. Si vous avez beaucoup de contenu avec des scènes très sombres, comme des films d’horreur, vous pouvez rencontrer des problèmes de qualité, notamment une sorte d’effet de halo de cercles concentriques autour de tout mouvement. Cela arrive surtout quand il y a du mouvement, mais pas toujours. Il faut tester quelques films et voir si cela vous gêne ; moi, oui. Le seul moyen de faire disparaître ce problème est d’augmenter la qualité. Malheureusement, je n’arrive pas à obtenir d’aide pour modifier les profils MCEBuddy, donc je suis coincé avec un nombre croissant de fichiers TS non convertis. Quand j’aurai résolu le problème, je le partagerai ici.

Tu as raison. Et je crois maintenant comprendre grossièrement pourquoi.

Ma perception était que l’accélération matérielle permettait simplement au GPU de prêter sa puissance de calcul pour accélérer le processus d’encodage. En réalité, ce n’est pas le cas. Pour utiliser l’accélération matérielle via ton GPU Nvidia, tu demandes aussi à l’encodeur GPU Nvidia intégré de se mettre au travail. Si l’encodeur de Nvidia embarqué dans le GPU peut fonctionner beaucoup plus vite que Handbrake, la qualité obtenue est inférieure. En d’autres termes, pour obtenir une qualité comparable, les fichiers vidéo convertis avec accélération matérielle sont plus volumineux.

Par conséquent, nous devons choisir entre un encodage plus rapide en utilisant la puissance du GPU et un encodage de meilleure qualité par Handbrake en tant qu’application tournant sur le CPU. C’est décevant que des cartes graphiques plus puissantes ne puissent pas nous aider à accélérer l’encodage si nous préférons Handbrake.

Veuillez consulter l’article ci-dessous pour une explication plus détaillée.
https://www.techspot.com/article/1131-hevc-h256-enconding-playback/page5.html

Voici ce que j’ai trouvé comme solution si vous voulez utiliser Handbrake. Le paramètre de qualité passé est le même entre les logiciels handbrake/ffmpeg et ffmpeg matériel, mais le matériel pour Handbrake est différent. J’ai donc fini par créer des profils spécifiques à l’encodage matériel. J’ai testé l’encodage matériel sur NVidia et Intel. Je peux vous dire qu’Intel est le meilleur. Taille de fichier correcte et excellente qualité, au moins avec h.265. Vous trouverez mes profils ci-dessous, adaptez-les à vos besoins.

Voici mes profils :

[HEVC MKV Intel]
Description=HEVC en MKV forcé sur Intel.
order=handbrake
DisableEncoderReordering=true
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec hevc_qsv -preset slow -crf 26 -vsync 2 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -map 0:a
ffmpeg-audioac3=-acodec copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-general=--decomb --auto-anamorphic --verbose=2
handbrake-video=--start-at duration:0 -e qsv_h265 --encoder-preset quality -q 26
handbrake-audio=--aencoder copy --audio-copy-mask ac3,eac3,truehd,dts,dtshd,mp3,flac --audio-fallback ffac3 -R auto
handbrake-audioac3=--aencoder copy --audio-copy-mask aac,ac3,eac3,truehd,dts,dtshd,mp3,flac -R auto
handbrake-ext=.mkv
handbrake-audiodelay=skip

[HEVC MKV NVidia]
Description=HEVC en MKV forcé sur NVidia.
order=handbrake
DisableEncoderReordering=true
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec hevc_nvenc -preset hq -crf 26 -vsync 2 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -map 0:a
ffmpeg-audioac3=-acodec copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
ffmpeg-UsingHardwareEncoding=true
ffmpeg-DisableSoftwareEncoderFallback=true
handbrake-general=--decomb --auto-anamorphic --verbose=2
handbrake-video=--start-at duration:0 -e nvenc_h265 --encoder-preset hq -q 26
handbrake-audio=--aencoder copy --audio-copy-mask ac3,eac3,truehd,dts,dtshd,mp3,flac --audio-fallback ffac3 -R auto
handbrake-audioac3=--aencoder copy --audio-copy-mask aac,ac3,eac3,truehd,dts,dtshd,mp3,flac -R auto
handbrake-ext=.mkv
handbrake-audiodelay=skip
handbrake-UsingHardwareEncoding=true
handbrake-DisableSoftwareEncoderFallback=true
AllowAllCopyRemuxing=true

Vouliez-vous recommander d’obtenir une nouvelle carte graphique avec un GPU compatible Intel Quick Sync ?

Je n’ai jamais utilisé Handbrake séparément, sauf lors du choix du profil HEVC MP4 dans MCEbuddy.

Je n’ai toujours pas une bonne compréhension du cadre de connaissances en conversion vidéo. Et mon matériel est assez daté aussi. Peut-être que je devrais consacrer plus de temps et d’argent à apprendre davantage sur la conversion vidéo et à obtenir un meilleur matériel, compte tenu de mon besoin considérable de convertir des enregistrements TV.

Je n’ai pas pour intention de dire « achetez ceci, pas cela ». Je ne fais que transmettre mes constats. Je pratique la conversion vidéo et la capture TV depuis une vingtaine d’années, mais je ne suis en aucun cas un expert. Mon système actuel possède un GPU Intel intégré (UHD 630) capable d’encoder en h.265 10 bits en hardware, ainsi qu’une RTX 2070. J’ai effectué des tests comparant la taille et la qualité des encodages h.265 hardware entre Intel et NVIDIA ; avec mes réglages et mes sources, Intel produit un fichier plus petit d’une qualité égale ou supérieure. La qualité reste subjective, et mes yeux ne sont plus ce qu’ils étaient. Je n’ai pas de carte AMD sous la main pour comparer ; peut-être qu’elle donnerait de meilleurs résultats.

Vous êtes sur la bonne voie : apprenez le plus possible, faites vos propres tests et déterminez ce qui vous convient le mieux. Vous constaterez que vous ajustez sans cesse vos réglages pour gagner encore en qualité et trouver le meilleur compromis taille/qualité. Voici quelques ressources pour débuter :

https://www.videohelp.com/ Existe depuis toujours et possède une communauté excellente.
Hardware Encoding - MCEBuddy Le forum d’encodage hardware ici même est également une mine d’informations.

Renseignez-vous sur HandBrake et ffmpeg : ce sont les outils de conversion principaux utilisés dans les profils MCEBuddy. J’utilise personnellement HandBrake parce que je le connais mieux ; ffmpeg est tout aussi performant, mais je le maîtrise moins.

Je ne connais pas bien la suppression de publicités, mais les forums présents ici regorgent d’informations et de conseils.

J’espère que cela vous sera utile. N’hésitez pas à poser des questions. J’essaie d’aider sur ces forums autant que mon temps libre me le permet, mais beaucoup d’autres font de même. Un conseil : activez la journalisation de débogage et joignez le journal de conversion lorsque vous posez une question ; les logs permettent de comprendre ce que fait MCEBuddy et de cibler rapidement les problèmes.

Je préfère ffmpeg à Handbrake et mes tests ont prouvé qu’il produit des fichiers plus petits qu’en H.264 avec une qualité identique ou supérieure, via des réglages que je n’arrive pas à faire fonctionner dans MCEBuddy… Ils passent parfaitement avec FFmpeg Batch AV Converter, qui me permet d’encoder quatre flux simultanément sans bloquer la machine. Si j’utilise MCEBuddy, je ne peux pas appliquer mes paramètres car personne ne m’aide à les adapter : j’ai expérimenté seul et je ne comprends pas comment MCEBuddy transmet les options au GPU. Le profil HEVC par défaut de MCEBuddy est inadapté : non seulement la qualité est inférieure, mais il déligne en logiciel, ce qui ralentit l’encodage et consomme davantage de ressources ; je ne peux donc lancer que deux tâches en parallèle si je veux garder le système réactif.

Les options que j’emploie dans FFmpeg Batch AV Converter sont :

-c:v hevc_nvenc -c:a copy -preset hq -rc constqp -rc-lookahead 60 -spatial_aq 1 -temporal_aq 1 -nonref_p 1 -cq 26

Le problème : FFmpeg Batch ne gère pas tout ce que MCEBuddy fait automatiquement ; je dois donc repasser à des opérations manuelles, ce que je n’ai ni le temps ni l’espace disque pour assumer. Je souhaite donc que ces réglages fonctionnent dans MCEBuddy… sauf -c:a copy, car MCEBuddy ré-encode l’audio alors que FFmpeg Batch se contente de le copier.

Voici le profil que j’utilise actuellement, fourni il y a des mois par SystemIdleProcess ; j’ai mis ffmpeg en premier car Handbrake monopolise trop de ressources :

[HEVC MKV AnyStream NVidia]
Description=HEVC in MKV hardset to use NVidia.
order=ffmpeg,handbrake
DisableEncoderReordering=true
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec hevc_nvenc -preset hq -crf 26 -vsync 2 -map 0:v -sn
ffmpeg-audio=-acodec ac3 -map 0:a
ffmpeg-audioac3=-acodec copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
ffmpeg-UsingHardwareEncoding=true
ffmpeg-DisableSoftwareEncoderFallback=true

Le plus gros souci : tout ce qui précède hevc_nvenc est traité en logiciel, donc inefficace, alors que le GPU pourrait s’en charger. Ensuite, -crf 26 est une option logicielle, ignorée par le GPU ; je suppose donc que le GPU nVidia se rabat sur ses valeurs par défaut. J’ai tenté de remplacer -crf 26 par -cq 26 (l’option matérielle) : aucun changement. J’ai même abaissé -cq progressivement : toujours pas de différence. Je ne comprends donc pas comment MCEBuddy transmet les paramètres au GPU.

J’ai aussi copié ma ligne FFmpeg Batch dans ffmpeg-video en supprimant les options audio : MCEBuddy encode, mais la vidéo est noire ; le son est présent. Je ne sais plus quoi faire. Je préfère MCEBuddy à tout autre logiciel, mais le profil HEVC matériel par défaut est inacceptable pour les films sombres — j’ai beaucoup d’horreurs. Je n’ai donc rien encodé depuis des mois, sinon quelques tests, et je conserve tous mes fichiers TS en attendant une solution ; je n’ai presque plus de place et je suis fatigué d’acheter des disques. Je risque donc d’abandonner MCEBuddy faute de documentation sur la manière de modifier réellement les réglages en accélération matérielle.

1 « J'aime »

Si vous ouvrez vos journaux de conversion, ils indiqueront la ligne de commande exacte transmise à ffmpeg. Si vous utilisez une version spéciale de ffmpeg, vous pouvez toujours remplacer la version fournie avec MCEBuddy dans le répertoire d’installation.

Si vous créez une version hautement personnalisée des paramètres vidéo et audio de ffmpeg et ne voulez pas que MCEBuddy les modifie (MCEBuddy les ajuste en fonction de la configuration définie dans la page Tâche de conversion comme les Curseurs de qualité, Optimiser la vidéo, Sélection des pistes audio, etc.), vous pouvez dire à MCEBuddy de conserver vos paramètres de profil tels quels avec ces deux directives ffmpeg (de même pour les autres encodeurs) :

Vous pouvez pratiquement tout faire avec MCEBuddy et je recommande vivement de consulter cette page pour ajuster vos paramètres : MCEBuddy - Advanced Settings, Commands and Tweaking

1 « J'aime »

Merci goose, je vais jeter un œil et faire des essais pour voir ce que je peux faire. Je ne sais tout simplement pas où placer mes commandes puisque la modification des profils semble n’avoir presque aucun effet, j’ai l’impression de mal m’y prendre… donc je reviendrai sans doute. Merci encore, je ne veux vraiment pas abandonner MCEBuddy car il fait tout ce que je veux, mais je suis arrivé à un point où j’ai besoin de le personnaliser pour qu’il réponde à mes besoins.

Dans le journal de conversion, cherchez le texte « Launching process ». Il apparaîtra plusieurs fois, mais repérez celui qui correspond à la tâche de conversion réelle. Juste en dessous, vous verrez les arguments transmis. S’ils ne correspondent pas à votre profil, ce dernier n’est pas appliqué correctement.

Je continue à expérimenter ffmpeg pour convertir les scènes sombres en HEVC. Je pense avoir un profil acceptable, mais la taille ne diminue pas assez pour que cela en vaille la peine. En utilisant le matériel NVidia, j’atteignais environ 160 ips. Je publierai quand j’aurai un meilleur profil et approfondi mes recherches sur les arguments. ffmpeg est une bête d’application.

MCEBuddy ne fonctionne pas avec mes paramètres. J’ai même mis à niveau vers la version de ffmpeg que j’utilise dans FFmpeg Batch AV Converter et les résultats sont identiques. J’obtiens l’audio et les sous-titres mais pas la vidéo. Voici la ligne du profil qui transmet les arguments à ffmpeg que j’utilise… sans succès dans MCEBuddy mais qui fonctionne parfaitement dans FFmpeg Batch, enfin tout ce qui suit hevc_nveng est ce que j’utilise dans Batch sauf que j’ajoute copy subs et copy audio

ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec hevc_nvenc -preset hq -rc constqp -rc-lookahead 60 -spatial_aq 1 -temporal_aq 1 -nonref_p 1 -cq 26

Essayez ceci : ouvrez le menu Démarrer et lancez le moteur en ligne de commande MCEBuddy, puis testez votre profil (n’oubliez pas d’ajouter à votre profil l’indice de @Goose mentionné plus haut afin de conserver vos paramètres). Certains pilotes ne prennent pas en charge l’encodage matériel via le processus système (service), ils préfèrent un processus utilisateur, ce que fait le moteur en ligne de commande : exécuter le moteur dans l’espace utilisateur plutôt qu’en tant que service (espace système).

RBoy… je n’arrive pas à comprendre comment faire et, si je dois lancer une ligne de commande à chaque fois que je veux encoder quelque chose, il est temps de laisser MCEBuddy derrière moi. Si MCEBuddy peut exécuter mon profil en ligne de commande, il n’y a aucune raison qu’il ne puisse pas le faire via l’interface graphique. J’utilise dans mon profil des arguments tous pris en charge par ffmpeg, directement issus de leur liste d’options disponibles pour nvenc.

Personne ne semble vouloir répondre à ma question. Comment MCEBuddy transmet-il les arguments au GPU ? Le fichier de configuration de profil ne le fait évidemment pas, puisqu’aucun des profils par défaut ne contient de commandes spécifiques au matériel… ils sont TOUS LOGICIELS… et incompatibles avec l’encodage GPU. Donc, quand on choisit l’accélération matérielle, je ne peux supposer que l’on obtient que les PARAMÈTRES PAR DÉFAUT de ffmpeg ou handbrake… ce qui est inutile si l’on se soucie de la qualité. Je ne veux pas utiliser des curseurs arbitraires pour choisir la qualité… je veux MES RÉGLAGES, car ils fonctionnent vraiment.

SystemIdleProcess m’a fourni le profil suivant (je ne montre que la ligne ffmpeg vidéo) :

ffmpeg-video=-ss 0 -vf yadif=0:-1:1,hqdn3d -vcodec hevc_nvenc -preset hq -crf 26 -vsync 2 -map 0:v -sn

La valeur -crf 26 est réservée au logiciel ; si je ne change que cette ligne par la commande correcte -cq 26, le profil produit bien une différence, sauf que la qualité n’est toujours pas au niveau souhaité. Mais si j’exécute le profil suivant dans FFmpeg Batch :

-c:v hevc_nvenc -c:a copy -preset hq -vf yadif=0:-1:1 -rc constqp -rc-lookahead 60 -spatial_aq 1 -temporal_aq 1 -nonref_p 1 -cq 26

j’obtiens exactement la qualité voulue, mais je perds tous les autres avantages de MCEBuddy. Et si je place ce profil dans le fichier profile.config :

ffmpeg-video=-c:v hevc_nvenc -preset hq -vf yadif=0:-1:1 -rc constqp -rc-lookahead 60 -spatial_aq 1 -temporal_aq 1 -nonref_p 1 -cq 26

qui est la bonne manière de transmettre les arguments à ffmpeg pour nVidia, le résultat est que je n’obtiens que l’audio, pas de vidéo DU TOUT.

Alors @Goose, peu importe le nombre de fois où vous me répondez par un copier-collé me disant de lire quelque chose, l’information dont j’ai besoin n’y est pas, ou alors je ne la comprends pas. Vous répétez que MCEBuddy peut faire tout ce que je veux, mais vous ne me dites jamais comment faire fonctionner les réglages que j’ai donnés plusieurs fois. C’est tout ce que je demande. Je veux continuer à utiliser MCEBuddy pour plein de raisons. Je l’ai adoré et c’est pour cela que je l’ai acheté, mais je ne peux plus l’employer depuis plus de trois mois parce que je n’obtiens pas une simple réponse de deux minutes de quelqu’un possédant le savoir que moi je n’ai pas. J’ai plus de 12 To (et ça augmente) de fichiers TS en attente que je ne peux pas traiter.

S’IL VOUS PLAÎT… j’ai besoin de cinq minutes de votre temps pour une réponse qui fonctionne vraiment.

@Ronstang J’ai une grosse file d’attente en cours de traitement, mais dès que j’aurai un moment, je vais essayer de vous aider à faire fonctionner cela. Pouvez-vous me fournir le dernier journal de conversion qui n’a pas fonctionné pour vous ? Et aussi, pouvez-vous me dire quelle carte GPU vous avez et quelle version du pilote vous utilisez ? Je ferai de mon mieux pour vous aider à résoudre le problème.

La bonne nouvelle, c’est que je parviens à reproduire le problème. La mauvaise nouvelle, c’est que je ne sais pas encore pourquoi cela se produit.

Essayez ceci :

ffmpeg-video=-c:v hevc_nvenc -preset hq -vf yadif=0:-1:1 -rc constqp -rc-lookahead 60 -spatial_aq 1 -temporal_aq 1 -nonref_p 1 -cq 26 -map 0:v -sn

C’était le paramètre map qui manquait et qui posait problème ; ne pas l’avoir pour la vidéo alors que l’audio était mappé ne laissait que l’audio en sortie.

Voici ce avec quoi j’ai testé :

[HEVC MKV ffmpeg NVidia]
Description=HEVC en MKV utilisant ffmpeg avec accélération matérielle NVidia.
order=ffmpeg
DisableEncoderReordering=true
ffmpeg-general=-threads 0 -v verbose
ffmpeg-video=-c:v hevc_nvenc -preset hq -vf yadif=0:-1:1 -rc constqp -rc-lookahead 60 -spatial_aq 1 -temporal_aq 1 -nonref_p 1 -cq 26 -map 0:v -sn
ffmpeg-audio=-c:a ac3 -map 0:a
ffmpeg-audioac3=-c:a copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
ffmpeg-UsingHardwareEncoding=true
ffmpeg-DisableSoftwareEncoderFallback=true

{“relevantCategories”:[“Healthcare”,"Fitness & Wellness

Essayez ce profil alors :

[HEVC MKV ffmpeg NVidia]
Description=HEVC en MKV utilisant le matériel NVidia via ffmpeg.
order=ffmpeg
DisableEncoderReordering=true
ffmpeg-general=-threads 0 -v verbose
ffmpeg-video=-c:v hevc_nvenc -vf yadif=0:-1:1 -preset hq -rc constqp -rc-lookahead 60 -spatial_aq 1 -temporal_aq 1 -nonref_p 1 -cq 26 -map 0:v -sn
ffmpeg-audio=-c:a ac3 -map 0:a
ffmpeg-audioac3=-c:a copy -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
ffmpeg-UsingHardwareEncoding=true
ffmpeg-DisableSoftwareEncoderFallback=true
1 « J'aime »

Où dois-je placer la commande

ffmpeg-VideoOptimized=True

À la fin, c’est bien. Je ne l’ai pas mis parce que je voulais que le recadrage se fasse. J’ai testé les deux façons et j’ai préféré le laisser de côté.