La raison pour laquelle je pose cette question est que certaines choses doivent être faites en étapes. La majeure partie de mon audio dans les films enregistrés est en AC3 5.1, donc je le rééchantillonne en stéréo AAC, puis je copie tous les flux audio tels quels avec les paramètres suivants :
Le problème est que je veux également appliquer une compression de plage dynamique sur la même piste stéréo AAC, mais ce type de traitement ne doit pas être utilisé avant que le fichier ait été rééchantillonné en stéréo… d’où mon dilemme. J’ai besoin d’appliquer la commande suivante dans ffmpeg :
-af dynaudnorm=f=150
sur la piste audio stéréo AAC APRÈS que MCEBuddy l’ait créée, mais je ne sais pas si MCEBuddy est capable de faire cela, et si c’est le cas, je ne sais pas comment.
Créez 2 tâches de conversion avec des profils différents et essayez d’enchaîner les conversions comme expliqué ici, où la sortie d’une conversion alimente la suivante
Donc si je comprends bien, une façon de faire ce que je veux est de laisser ma configuration actuelle telle quelle, puis de remettre les fichiers MKV de sortie dans MCEBuddy et de les traiter en tant que MKV non traités, mais en modifiant le premier flux audio, qui est maintenant un AAC 2 canaux, avec la compression de plage dynamique ?
Utiliser des emplacements surveillés crée trop de problèmes. Pour moi, il serait plus simple de simplement recharger les fichiers dans MCEBuddy avec le profil MKV non traité ajusté à mes besoins pour ne modifier que l’audio et de supprimer les fichiers source une fois terminé. Je lance 40 conversions ou plus à la fois et je ne veux pas que des emplacements surveillés alimentent la file d’attente, car peu importe ce que vous me dites, tous les fichiers sont ajoutés au début de la file et je n’ai jamais réussi à empêcher cela.
Je pense qu’il pourrait être possible d’utiliser les commandes personnalisées dans un profil pour faire cela. Je ne suis pas encore tout à fait certain de la façon de procéder ni de l’ordre à suivre, mais laissez-moi un peu de temps pour examiner la question et je vous reviendrai.
Voici ce que j’ai trouvé. AVERTISSEMENT : je n’ai pas pu tester cela et mes connaissances en ffmpeg sont médiocres au mieux. Mais cela peut être un bon point de départ pour que d’autres interviennent et aident.
Ajoutez ceci au profil pour lequel vous souhaitez normaliser l’audio stéréo.
En gros, cela devrait fonctionner ainsi : après la conversion du fichier mais avant son déplacement vers la destination, CMD sera exécuté avec les paramètres spécifiés. Décomposons les paramètres :
/c
Lance l’invite de commande et quitte une fois terminé. Ne vous souciez pas de celui-ci
Renomme le fichier converti dans son emplacement actuel (puisqu’on utilise CustomCommand, ce sera dans le répertoire de travail) en ajoutant un -1. On le renomme pour que notre nouveau fichier porte le nom attendu une fois ces commandes personnalisées terminées et MCEBuddy repris le contrôle.
&
Signifie essentiellement « nouvelle commande à exécuter ». Ne vous en souciez pas. Si vous voulez plus de commandes, séparez-les avec &.
Le vrai « magique » est ici ; toute modification d’exécution se fera dans cette partie. Cela devrait copier la vidéo telle quelle, appliquer la normalisation à la première piste audio et copier les deux autres pistes audio sans changement.
del “%workingpath%%convertedfilename%-1.%convertedext%”
Supprime le fichier original renommé lors de la première commande. Un peu de ménage.
Merci beaucoup… Je suis désolé d’avoir mis si longtemps à voir ça et à le tester, mais je viens de le faire sur un court échantillon de 5 minutes que j’utilise pour tester les profils et les commandes personnalisées ont fonctionné. Ma seule question maintenant est : comment puis-je vérifier que la compression de plage dynamique a bien eu lieu ? Oh, attends… je peux extraire l’audio du fichier source et du fichier converti, puis les comparer dans un éditeur audio.
EDIT… Je vérifierai dans un éditeur audio quand j’aurai le temps, mais en écoutant simplement l’original et la version convertie, je peux entendre une différence : les effets sonores ne sont plus aussi envahissants, tout en restant un peu plus forts. Il semble donc que ce soit exactement ce que je recherchais… MERCI !
Maintenant, la seule chose que je dois encore comprendre pour que ce soit parfait, c’est si je peux utiliser ffprobe pour analyser d’abord le fichier audio, puis lui faire choisir les paramètres à la fois pour la compression de plage dynamique et ensuite pour la normalisation (afin que toutes les séries/films aient un volume standard identique) ; donc si vous avez des idées, tout conseil serait apprécié.
J’ai expérimenté plusieurs méthodes pour faire ça, mais aucune n’est vraiment fiable. Et à cause d’une erreur utilisateur, j’ai effacé les profils que j’utilisais pour tester, donc je ne peux même pas vous fournir d’exemples. J’ai aussi perdu tous mes logs.
J’ai essayé deux workflows différents. Le premier utilise precustomcommand pour extraire l’audio séparément en stéréo, un fichier batch le normalise via ffprobe en passant les variables comme arguments, la vidéo passe par le traitement MCEBuddy habituel sans cette piste stéréo, puis customcommand la réinsère. Ça a marché environ 10 % du temps.
J’ai aussi tenté d’extraire la piste audio telle quelle dans precustomcommand, de traiter la vidéo via MCEBuddy uniquement en stéréo avec l’option « Volume leveling » activée, puis de réinsérer les pistes surround. C’est ce qui a le mieux fonctionné, mais je ne suis pas sûr que ce soit la normalisation souhaitée.
Enfin, j’ai simplement désactivé les customcommands et traité avec l’option « Volume leveling » activée : ça a marché à 100 %, mais là encore, je ne sais pas si le résultat vous convient.
Si j’ai plus de temps libre, je continuerai à tester, mais je commence un nouveau travail bientôt et je n’aurai probablement pas l’occasion pendant un moment.
Merci beaucoup pour l’effort. J’espère que mon ami me transmettra la méthode qu’il utilise avec ffmpeg, mais il est difficile : il veut que j’utilise le script Sickbeard à la place et n’a pas le temps de m’apprendre à m’en servir.
Si j’obtiens ses informations, il ne devrait plus s’agir que de modifier la commande personnalisée à partir de celle que vous m’avez déjà fournie.
J’ai trouvé un moyen de simplifier cela sans avoir à faire d’analyse préalable. J’ai découvert la commande et les paramètres suivants à utiliser dans ffmpeg, et il semble y avoir un consensus sur le fait que ce sont les bons réglages :
-af loudnorm=I=-16:LRA=11:TP=-1.5
Cela effectuera la normalisation. Je suppose qu’il faut d’abord faire la compression de plage dynamique, puis appliquer cela, donc en gros, existe-t-il un moyen de faire passer la sortie de la commande personnalisée que vous avez créée ci-dessus pour la compression de plage dynamique dans une autre commande personnalisée appliquant cette commande ? À moins qu’il n’y ait une meilleure façon de faire, je sais que je n’en ai aucune idée.
J’ai essayé de jouer avec moi-même, mais je n’ai pas réussi à enchaîner les deux commandes pour que ça fonctionne correctement. Je me perds dans la syntaxe. Je ne suis pas programmeur… LOL