Comparez deux fichiers vidéo pour savoir lequel a la meilleure qualité

30

Supposons que j'ai le même matériel vidéo encodé dans deux (ou plus) fichiers. Je voudrais exécuter un utilitaire sur eux qui a fondamentalement souligné quel fichier est "le meilleur" en qualité. "Groundly" signifie que j'aimerais obtenir un rapport qui compare différents aspects (par exemple la résolution vidéo, le débit binaire vidéo, le taux d'échantillonnage audio, le débit binaire audio, etc., etc.) un par un, puis un score intégral qui rend compte de tous d'eux.

Il s'agit de la fonctionnalité, mais pour que cet utilitaire soit réellement utilisable, il doit être open-source et en ligne de commande.

pfalcon
la source
Pour commencer à collecter des informations connexes (pas vraiment une solution selon les critères ci-dessus), il y a repo.or.cz/w/mplayer.git/blob/HEAD:/TOOLS/psnr-video.sh Voici des trucs "like a pro": compression .ru / video / quality_measure /… . Mais ce n'est pas open-source, et compare "original" et "copie", pas seulement 2 fichiers impartiaux.
pfalcon du
Question connexe: stackoverflow.com/questions/3518417/…
pfalcon

Réponses:

88

Je travaille dans la recherche sur la qualité vidéo et il est difficile de donner une réponse simple à votre question. Ce que vous voulez, c'est un programme qui vous donne un Score d'opinion moyen (MOS) d'une vidéo, c'est-à-dire un nombre compris entre 1 et 5, ou entre 0 et 100, ce qui correspond à la qualité perçue par un être humain.

Pourquoi vous ne pouvez pas simplement comparer débit / résolution / etc.

La simple comparaison de la résolution vidéo ne dira rien de la qualité. En fait, cela peut être complètement trompeur. Un rip 1080p à 700 Mo peut sembler pire qu'un rip 720p à 700 Mo, car pour le premier, le débit est trop faible, ce qui introduit toutes sortes d'artefacts de compression.

Il en va de même pour comparer le débit binaire à des tailles de trame similaires, car différents encodeurs peuvent réellement offrir une meilleure qualité à un débit binaire moindre, ou vice-versa. Par exemple, un rip 720p de 700 Mo produit avec XviD sera plus mauvais qu'un rip de 700 Mo produit avec x264, car ce dernier est beaucoup plus efficace.

Vous devrez également définir comment un «score intégral» final (le MOS) est composé des facteurs de qualité individuels. Cela dépend fortement de plusieurs choses, y compris, mais sans s'y limiter:

  • le type de vidéos que vous comparez (dessins animés, films, actualités, etc.)
  • leur longueur
  • leur audience
  • leur taille d'origine
  • leur "qualité" d'origine avant d'être encodées

Nous ne parlons même pas de la façon dont les humains percevraient les vidéos. Supposons que vous ayez un ami qui regarde des films parce qu'il aime les détails nets et la haute résolution de mouvement. Ils seraient beaucoup plus critiques lorsqu'ils voient une déchirure de faible qualité qu'un ami qui ne fait que regarder des films pour leur contenu . Ils ne se soucieraient probablement pas autant de la qualité, tant que le film est drôle ou divertissant.

Il existe différents types de métriques de qualité vidéo!

Permettez-moi de vous donner une liste de ce que je pense être le plus couramment utilisé pour l'évaluation de base de la qualité vidéo aujourd'hui. Il existe plusieurs métriques de qualité vidéo, qui peuvent être classées en fonction du type d'informations utilisées pour déterminer la qualité. En principe et très simplement, vous distinguez les éléments suivants:

  • Métriques sans référence - Ils n'ont qu'une seule vidéo en entrée et produisent un score de qualité. Dans votre cas, vous recherchez une métrique sans référence , car vous n'avez souvent même pas la vidéo d'origine. Une telle mesure prendra une vidéo et produira un score de qualité. Voici quelques exemples de problèmes qu'une métrique NR détectera (par exemple le flou).

  • Métriques de référence complète - Ils ont deux entrées, l'une étant la vidéo d'entrée d'origine et l'autre étant la vidéo encodée. Par exemple, vous pouvez prendre un film DVD, puis en créer deux déchirures et utiliser une métrique de référence complète pour estimer la perte de qualité entre le film DVD original (c'est-à-dire la vidéo MPEG-2 sur le disque) et vos déchirures. Cela prendra du temps à calculer, mais c'est plus précis.

Les mesures ci-dessus concernent la qualité du codage vidéo, mais il existe également des mesures qui intègrent des problèmes tels que les temps de chargement initiaux et les événements de blocage lors de la diffusion vidéo (par exemple UIT-T P.1203 ).

Quel logiciel puis-je utiliser?

Voici une liste d'outils prêts à l'emploi que vous pouvez utiliser pour tester certaines mesures (certains sont pour Windows uniquement):

Maintenant, quelles sont les mesures?

PSNR, PSNR-HVS et PSNR-HVS-M

Pour commencer, le PSNR (Peak Signal-to-Noise Ratio) est une méthode très simple à utiliser mais quelque peu médiocre pour évaluer la qualité vidéo. Il fonctionne relativement bien cependant pour la plupart des applications, mais il ne donne pas une bonne estimation de la façon dont les humains percevraient la qualité.

Le PSNR peut être calculé image par image, puis vous feriez par exemple la moyenne du PSNR d'une séquence vidéo entière pour obtenir le score final. Un PSNR plus élevé est préférable.

Le PSNR-HVS et le PSNR-HVS-M sont des extensions du PSNR qui tentent d'émuler la perception visuelle humaine, ils devraient donc être plus précis. VQMT et MSU peuvent calculer PSNR, PSNR-HVS et PSNR-HVS-M entre deux vidéos.

SSIM, MS-SSIM

La similarité structurelle (SSIM) est aussi facile à calculer que le PSNR et offre des résultats plus précis, mais toujours image par image. Vous trouverez quelques implémentations sous le lien Wikipédia, ou vous pouvez utiliser VQMT ou MSU . Ces outils incluent également MS-SSIM, qui donne de meilleurs résultats (c'est-à-dire plus représentatifs) que SSIM, ainsi que quelques autres dérivés.

Les résultats devraient être similaires à PSNR. Encore une fois, vous devez comparer une référence à une vidéo traitée pour que cela fonctionne, et les deux vidéos doivent être de la même taille.

VMAF

Évaluation multi-méthodes vidéo Fusion par Netflix est un ensemble d'outils pour calculer la qualité vidéo sur la base de certaines mesures existantes, qui sont ensuite fusionnées par des méthodes d'apprentissage automatique en un score final compris entre 0 et 100. Netflix a expliqué tout cela ici :

[VMAF] prédit la qualité subjective en combinant plusieurs métriques de qualité élémentaire. La justification de base est que chaque métrique élémentaire peut avoir ses propres forces et faiblesses en ce qui concerne les caractéristiques du contenu source, le type d'artefacts et le degré de distorsion. En `` fusionnant '' les métriques élémentaires en une métrique finale à l'aide d'un algorithme d'apprentissage automatique - dans notre cas, un régresseur SVM (Support Vector Machine) - qui attribue des poids à chaque métrique élémentaire, la métrique finale pourrait préserver toutes les forces des métriques individuelles et fournir un score final plus précis.

Vous pouvez également utiliser ffmpegpour calculer les scores VMAF .

VQM

La métrique de qualité vidéo a été validée par le groupe d'experts en qualité vidéo (VQEG) et est un très bon algorithme de référence complète. Vous pouvez télécharger VQM gratuitement ou utiliser l'implémentation à partir de MSU.

Lorsque vous vous inscrivez et téléchargez, vous souhaitez utiliser le modèle général NTIA ou le modèle de qualité vidéo avec un délai d'image variable .

Autres mesures

  • PEVQ est une métrique de référence complète normalisée selon l'UIT-T J.246. Il vise les signaux multimédias, mais pas la vidéo HD.
  • VQuad-HD est une autre métrique de référence complète normalisée comme UIT-T J.341. Puisqu'il est plus récent, il est mieux adapté à la vidéo HD.

Les deux sont des solutions commerciales et vous ne trouverez pas de logiciel à télécharger pour eux.

Il existe également certaines normes de l'UIT sur les mesures sans référence, telles que l' UIT-T P.1201 et l' UIT-T P.1202 , qui fonctionnent avec les paramètres du flux binaire pour la diffusion IPTV. UIT-T P.1203 peut être utilisé pour les cas de streaming adaptatif.


Sommaire

Si vous cherchez simplement à comparer des critères simples objectivement mesurables comme:

  • Taille du cadre
  • Débit binaire
  • Images par seconde
  • Résolution vidéo

… Un simple appel à ffmpeg -idevrait vous donner tous les détails dont vous avez besoin au début. Jetez également un œil à l' -vstatsoption. Vous pouvez ensuite résumer cela dans une feuille de calcul. Notez que lorsque vous encodez des vidéos, x264par exemple, vous enregistrerez des éléments tels que PSNR directement dans un fichier si vous en avez besoin, afin que vous puissiez utiliser ces valeurs plus tard.

Quant à la façon de peser ces critères, vous devriez probablement mettre l'accent sur le débit binaire - mais seulement si vous savez que le codec est le même. On pourrait généralement dire que lorsque les deux vidéos utilisent x264, celle avec un débit binaire plus élevé est meilleure. Plus généralement encore, vous devriez choisir une résolution inférieure lorsque vous avez deux vidéos avec le même débit binaire, car la dégradation due à la conversion ascendante n'est pas aussi mauvaise que la dégradation due au faible débit binaire.

Il n'est pas possible de comparer différents codecs en fonction de leur débit binaire à moins d'en savoir plus sur le contenu et les paramètres d'encodage individuels. La fréquence d'images est également très subjective et doit être prise en compte dans vos mesures si elle est bien inférieure à 25 Hz.

Pour résumer, insistez fortement sur le débit binaire si c'est la seule chose que vous avez. N'oubliez pas d'utiliser vos yeux aussi :)

slhck
la source
Tout d'abord, en tant qu'auteur original de la question, je suis désolé de ne pas avoir commenté auparavant. Le message est en effet génial et bien apprécié. Malheureusement, je ne peux pas l'accepter comme réponse à ma question initiale. La raison en est: j'ai délibérément posté la question ici et non sur StackOverflow, car je voulais une suggestion d'outil existant et prêt à l'emploi. Qu'il s'agisse de savoir comment écrire un tel outil, votre réponse serait un vainqueur absolu. Mais désolé, je ne peux pas écrire tout ce dont j'ai besoin à partir de zéro, alors laissez l'utilisateur me poser des questions et attendre des réponses (peut-être pas hier ou aujourd'hui, peut-être à l'avenir ;-)
pfalcon
1
Grande réponse informative. Même si ce n'est pas une réponse directe, j'aime voir les gens prendre leur temps pour écrire de tels documents informatifs. +1
SuperDuck
1

Je ne connais aucun outil qui vous donnera une recommandation finale ou un score, mais en utilisant FFmpeg , vous pouvez générer tous les détails que vous avez répertoriés dans la question.

Sur la ligne de commande, ffmpeg -i répertorie les informations de la vidéo. De là, vous pouvez écrire un script pour analyser les informations et les pondérer comme bon vous semble.

jhulst
la source
Merci, oui, c'est ce que je faisais pendant quelques heures avant de décider de demander s'il existe un meilleur outil "magique" ;-)
pfalcon