web-dev-qa-db-fra.com

Comparez deux fichiers vidéo pour déterminer lequel offre la meilleure qualité.

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

C'est à propos de la fonctionnalité, mais pour que cet utilitaire soit réellement utilisable, il doit être open-source et en ligne de commande.

28
pfalcon

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 moyen d'opinion (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é tel que perçu par un être humain.

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

Le simple fait de comparer la résolution vidéo ne dit rien sur la qualité. En fait, cela peut être complètement trompeur. Une déchirure de film 1080p à une taille de 700 Mo peut sembler pire qu'une déchirure de 720p à 700 Mo, car pour le premier modèle, le débit binaire est trop faible, ce qui introduit toutes sortes d'artefacts de compression.

Il en va de même pour la comparaison du débit binaire avec des tailles de trame similaires, car différents codeurs peuvent en réalité offrir une meilleure qualité à un débit binaire inférieur, ou inversement. Par exemple, une déchirure 720p de 700 Mo produite avec XviD aura un aspect pire qu'une déchirure de 700 Mo produite avec x264, car cette dernière est beaucoup plus efficace.

Vous devez également définir comment un "score intégral" final (le MOS) est composé des facteurs de qualité individuels. Ceci 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, nouvelles, etc.)
  • leur longueur
  • leur audience
  • leur taille d'origine
  • leur "qualité" d'origine avant d'être encodés

Nous ne parlons même pas de la façon dont les humains percevraient les vidéos. Supposons que vous avez un ami qui regarde des films car il ou elle aime les détails précis et la résolution élevée des mouvements. Ils seraient beaucoup plus critiques devant un rip de qualité médiocre qu’un ami qui regarde juste 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 à quoi je pense est 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’information utilisé pour déterminer la qualité. En principe et très simplement, vous faites la distinction entre:

  • Mesures sans référence : elles ont juste une vidéo en entrée et génèrent un score de qualité. Dans votre cas, vous recherchez une métrique sans référence , car vous ne disposez souvent même pas de la vidéo d'origine. Une telle métrique prendra une vidéo et produira un score de qualité. Voici quelques exemples des problèmes détectés par une métrique NR (par exemple, le flou).

  • Mesures de référence complète - Elles ont deux entrées, l'une étant la vidéo d'entrée d'origine et l'autre, la vidéo codée. Par exemple, vous pouvez créer un film sur DVD, puis créer deux extraits et utiliser une mesure de référence complète pour estimer la perte de qualité entre le film DVD d'origine (c'est-à-dire la vidéo MPEG-2 sur le disque) et vos extraits. Cela prendra beaucoup de temps à calculer, mais c'est plus précis.

Les métriques ci-dessus traitent de la qualité du codage vidéo, mais il existe également des métriques incorporant des problèmes tels que les temps de chargement initiaux et les événements bloqués lors de la transmission vidéo en continu (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 métriques (certains concernent uniquement Windows):

Maintenant quelles sont les métriques?

PSNR, PSNR-HVS et PSNR-HVS-M

Pour commencer, PSNR (Rapport signal/bruit de pointe) est une méthode très simple à utiliser, mais quelque peu médiocre, permettant d'évaluer la qualité vidéo. Cela fonctionne relativement bien pour la plupart des applications, mais cela ne donne pas une bonne estimation de la façon dont les humains perçoivent la qualité.

Le PSNR peut être calculé image par image. Ensuite, vous feriez par exemple une moyenne du PSNR d’une séquence vidéo complète pour obtenir le score final. Plus le PSNR est élevé, mieux c'est.

PSNR-HVS et PSNR-HVS-M sont des extensions du PSNR qui tentent d'imiter la perception visuelle humaine. Elles devraient donc être plus précises. VQMT et MSU peut calculer le PSNR, le PSNR-HVS et le PSNR-HVS-M entre deux vidéos.

SSIM, MS-SSIM

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

Les résultats devraient être similaires à ceux du 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 de Netflix est un ensemble d'outils permettant de calculer la qualité vidéo sur la base de métriques existantes, qui sont ensuite fusionnées par des méthodes d'apprentissage automatique en un résultat final compris entre 0 et 100. Netflix a tout expliqué ici :

[VMAF] prédit la qualité subjective en combinant plusieurs métriques de qualité élémentaires. La logique 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'artefact 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 Machine de vecteur de support (SVM) - qui attribue des poids à chaque métrique élémentaire, la métrique finale pourrait conserver toutes les forces des métriques individuelles. , et livrer un score final plus précis.

Vous pouvez également utiliser ffmpeg pour 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 constitue un très bon algorithme de référence complète. Vous pouvez télécharger VQM gratuitement ou utiliser l'implémentation de MSU.

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

Autres métriques

  • PEVQ est une métrique de référence complète normalisée selon la norme UIT-T J.246. Il vise les signaux multimédia, mais pas la vidéo HD.
  • VQuad-HD est une autre métrique de référence complète normalisée sous le numéro UIT-T J.341. Comme il est plus récent, il convient mieux à 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 relatives aux métriques sans référence, telles que UIT-T P.1201 et UIT-T P.1202 , qui fonctionnent avec les paramètres du bitstream pour le streaming IPTV. UIT-T P.1203 peut être utilisé pour les cas de transmission adaptative en continu.


Résumé

Si vous cherchez simplement à comparer des critères simples, objectivement mesurables, tels que:

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

… Un simple appel à ffmpeg -i devrait vous donner tous les détails dont vous avez besoin au début. Jetez également un coup d'œil à l'option -vstats. Vous pouvez ensuite résumer ceci dans un tableur. Notez que lorsque vous encodez des vidéos, x264, par exemple, enregistre des éléments tels que PSNR directement dans un fichier si vous en avez besoin, afin que vous puissiez utiliser ces valeurs ultérieurement.

Pour ce qui est de savoir comment 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. Vous pouvez généralement dire que lorsque les deux vidéos utilisent x264, celle avec un débit binaire élevé est meilleure. De manière encore plus générale, vous devez choisir une résolution plus basse lorsque vous avez deux vidéos avec le même débit, car la dégradation due à l’agrandissement n’est pas aussi grave que celle due à un faible débit.

Il est impossible de comparer différents codecs en fonction de leur débit, sauf si vous en savez plus sur le contenu et les paramètres de codage individuels. La cadence d'images est également une question très subjective et doit être prise en compte dans vos mesures si elle est bien inférieure à 25 Hz.

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

83
slhck

Je ne connais aucun outil qui puisse vous donner une recommandation ou un score final, mais en utilisant FFmpeg , vous pouvez afficher tous les détails que vous avez énumérés dans la question. .

Sur la ligne de commande, ffmpeg -i listera les informations de la vidéo. À partir de là, vous pouvez écrire un script pour analyser les informations et les pondérer comme vous le souhaitez.

1
jhulst