Vergleichen Sie zwei Videodateien, um die beste Qualität zu ermitteln


30

Angenommen, ich habe dasselbe Videomaterial in zwei (oder mehr) Dateien codiert. Ich würde gerne ein Hilfsprogramm für sie ausführen, das darauf hinweist, welche Datei von der Qualität her "die beste" ist. "Grundsätzlich" bedeutet, dass ich einen Bericht erhalten möchte, in dem verschiedene Aspekte (z. B. Videoauflösung, Videobitrate, Audioabtastrate, Audiobitrate usw. usw.) nacheinander verglichen werden, und dann eine ganzzahlige Bewertung, die alle Aspekte berücksichtigt von ihnen.

Hier geht es um die Funktionalität, aber damit dieses Dienstprogramm tatsächlich verwendet werden kann, sollte es Open Source und Befehlszeile sein.


Suchen Sie sich einige relevante Informationen zu sammeln (nicht wirklich eine Lösung pro Kriterien oben), gibt es repo.or.cz/w/mplayer.git/blob/HEAD:/TOOLS/psnr-video.sh Hier ist „wie ein Profi“ Material: Kompression .ru / video / qualitätsmessung /… . Aber es ist kein Open-Source-Programm und vergleicht "Original" und "Kopie", nicht nur 2 unvoreingenommene Dateien.
Pfalcon

Antworten:


88

Ich arbeite in der Videoqualitätsforschung und es ist schwierig, Ihre Frage einfach zu beantworten. Was Sie wollen, ist ein Programm, das Ihnen einen Mean Opinion Score (MOS) eines Videos gibt, dh eine Zahl zwischen 1 und 5 oder zwischen 0 und 100, was der von einem Menschen wahrgenommenen Qualität entspricht.

Warum kann man Bitrate / Auflösung / etc. Nicht einfach vergleichen?

Allein der Vergleich der Videoauflösung sagt noch nichts über die Qualität aus. In der Tat kann es völlig irreführend sein. Ein 1080p-Movie-Rip mit einer Größe von 700 MB sieht möglicherweise schlechter aus als ein 720p-Rip mit einer Größe von 700 MB, da bei ersteren die Bitrate zu niedrig ist, wodurch alle Arten von Komprimierungsartefakten auftreten.

Gleiches gilt für den Vergleich der Bitrate bei ähnlichen Frame-Größen, da verschiedene Encoder tatsächlich eine bessere Qualität bei geringerer Bitrate liefern können oder umgekehrt. Beispielsweise sieht ein mit XviD erstellter 720p-Rip mit 700 MB schlechter aus als ein mit x264 erstellter Rip mit 700 MB, da letzterer wesentlich effizienter ist.

Sie müssten auch definieren, wie sich eine endgültige "ganzzahlige Bewertung" (MOS) aus den einzelnen Qualitätsfaktoren zusammensetzt. Dies hängt stark von verschiedenen Dingen ab, einschließlich, aber nicht beschränkt auf:

  • die Art von Videos, die Sie vergleichen (Cartoons, Filme, Nachrichten usw.)
  • ihre Länge
  • ihre Zuschauer
  • ihre ursprüngliche Rahmengröße
  • ihre ursprüngliche "Qualität", bevor sie codiert wurden

Wir reden nicht einmal darüber, wie Menschen die Videos wahrnehmen würden. Nehmen wir an, Sie haben einen Freund, der sich Filme ansieht, weil er oder sie gestochen scharfe Details und eine hohe Bewegungsauflösung mag. Sie wären viel kritischer, wenn sie einen Rip mit geringer Qualität sehen würden, als ein Freund, der sich nur Filme für ihren Inhalt ansieht . Sie würden sich wahrscheinlich nicht so sehr für die Qualität interessieren, solange der Film lustig oder unterhaltsam ist.

Es gibt verschiedene Arten von Videoqualitätsmetriken!

Lassen Sie mich Ihnen eine Liste geben, an was ich heute für die grundlegende Bewertung der Videoqualität am häufigsten denke. Es gibt verschiedene Videoqualitätsmetriken, die klassifiziert werden können, anhand welcher Art von Informationen die Qualität bestimmt wird. Grundsätzlich und ganz einfach unterscheidet man zwischen:

  • Keine Referenzmetriken - Sie haben nur ein Video als Eingabe und geben einen Qualitätsfaktor aus. In Ihrem Fall suchen Sie nach einer No-Reference-Metrik , da Sie häufig nicht einmal das Originalvideo haben. Eine solche Metrik nimmt ein Video auf und gibt einen Qualitätsfaktor aus. Hier sind einige Beispiele für Probleme, die eine NR-Metrik erkennen kann (z. B. Unschärfe).

  • Vollreferenz-Metriken - Sie haben zwei Eingänge, wobei einer das ursprüngliche Eingangsvideo und der andere das codierte Video ist. Sie können beispielsweise einen DVD-Film aufnehmen, dann zwei Rips daraus erstellen und mithilfe einer vollständigen Referenzmetrik den Qualitätsverlust zwischen dem ursprünglichen DVD-Film (dh dem MPEG-2-Video auf der Disc) und Ihren Rips abschätzen. Die Berechnung dauert lange, ist aber genauer.

Die oben genannten Messdaten beziehen sich auf die Video-Codierungsqualität, es gibt jedoch auch Messdaten, die Probleme wie die anfänglichen Ladezeiten und Verzögerungsereignisse beim Streamen von Videos beinhalten (z. B. ITU-T S.1203 ).

Welche Software kann ich verwenden?

Hier ist eine Liste gebrauchsfertiger Tools, mit denen Sie einige Metriken testen können (einige sind nur für Windows):

Welche Metriken gibt es nun?

PSNR, PSNR-HVS und PSNR-HVS-M

Für den Anfang ist PSNR (Peak Signal-to-Noise Ratio) eine sehr einfach zu verwendende, aber etwas schlechte Methode zur Beurteilung der Videoqualität. Es funktioniert zwar für die meisten Anwendungen relativ gut, gibt jedoch keine gute Einschätzung darüber, wie Menschen die Qualität wahrnehmen würden.

PSNR kann Bild für Bild berechnet werden, und dann würden Sie zum Beispiel das PSNR einer ganzen Videosequenz mitteln, um die endgültige Punktzahl zu erhalten. Höhere PSNR ist besser.

PSNR-HVS und PSNR-HVS-M sind Erweiterungen von PSNR, die versuchen, die visuelle Wahrnehmung des Menschen zu emulieren. Sie sollten daher genauer sein. VQMT und MSU können PSNR, PSNR-HVS und PSNR-HVS-M zwischen zwei Videos berechnen.

SSIM, MS-SSIM

Structural Similarity (SSIM) ist so einfach zu berechnen wie PSNR und liefert genauere Ergebnisse, jedoch immer noch Frame für Frame. Sie finden einige Implementierungen unter dem Wikipedia-Link, oder Sie können VQMT oder MSU verwenden . Diese Tools umfassen auch MS-SSIM, das bessere (dh repräsentativere) Ergebnisse liefert als SSIM, sowie einige andere Derivate.

Die Ergebnisse sollten ähnlich wie bei PSNR sein. Auch hier müssen Sie einen Verweis auf ein verarbeitetes Video vergleichen, damit dies funktioniert. Beide Videos sollten dieselbe Größe haben.

VMAF

Video Multi-Method Assessment Fusion von Netflix ist eine Reihe von Tools zur Berechnung der Videoqualität auf der Grundlage einiger vorhandener Metriken, die dann durch Methoden des maschinellen Lernens zu einem Endergebnis zwischen 0 und 100 verschmolzen werden. Netflix hat das Ganze hier erklärt :

[VMAF] sagt subjektive Qualität voraus, indem es mehrere elementare Qualitätsmetriken kombiniert. Das Grundprinzip ist, dass jede elementare Metrik ihre eigenen Stärken und Schwächen in Bezug auf die Eigenschaften des Quellinhalts, die Art der Artefakte und den Grad der Verzerrung haben kann. Durch 'Zusammenführen' elementarer Metriken zu einer endgültigen Metrik unter Verwendung eines Algorithmus zum maschinellen Lernen - in unserem Fall eines SVM-Regressors (Support Vector Machine) - der jeder elementaren Metrik eine Gewichtung zuweist, kann die endgültige Metrik alle Stärken der einzelnen Metriken bewahren und liefern eine genauere Endnote.

Sie können auch verwenden ffmpegVMAF Noten zu berechnen .

VQM

Die Videoqualität Metric wurde in der validierten Videoqualität Experts Group (VQEG) und ist ein sehr guter Full-Referenzalgorithmus. Sie können VQM kostenlos herunterladen oder die Implementierung von MSU verwenden.

Wenn Sie sich registrieren und herunterladen, möchten Sie das allgemeine NTIA-Modell oder das Videoqualitätsmodell mit variabler Bildverzögerung verwenden .

Andere Metriken

  • PEVQ ist eine standardisierte Vollreferenzmetrik nach ITU-T J.246. Es zielt auf Multimedia-Signale ab, aber nicht auf HD-Videos.
  • VQuad-HD ist eine weitere als ITU-T J.341 standardisierte Vollreferenzmetrik. Da es neuer ist, ist es besser für HD-Videos geeignet.

Bei beiden handelt es sich um kommerzielle Lösungen, für die Sie keine Software zum Herunterladen finden.

Es gibt auch einige ITU-Standards für Nichtreferenzmetriken , wie ITU-T P.1201 und ITU-T P.1202 , die mit Parametern aus dem Bitstream für IPTV-Streaming arbeiten. ITU-T S.1203 kann für Fälle von adaptivem Streaming verwendet werden.


Zusammenfassung

Wenn Sie nur einfache objektiv messbare Kriterien vergleichen möchten, wie:

  • Rahmengröße
  • Bitrate
  • Bilder pro Sekunde
  • Video Auflösung

… Ein einfacher Anruf ffmpeg -isollte Ihnen alle Details geben, die Sie zu Beginn benötigen. Schauen Sie sich auch die -vstatsOption an. Sie können dies dann in einer Tabelle zusammenfassen. Beachten Sie, dass beim Codieren von Videos x264beispielsweise PSNR-Daten bei Bedarf direkt in einer Datei protokolliert werden, sodass Sie diese Werte später verwenden können.

Was das Abwägen dieser Kriterien angeht, sollten Sie wahrscheinlich die Bitrate betonen - aber nur, wenn Sie wissen, dass der Codec derselbe ist. Man kann allgemein sagen, dass bei Verwendung von x264 für beide Videos die höhere Bitrate besser ist. Im Allgemeinen sollten Sie eine niedrigere Auflösung wählen, wenn Sie zwei Videos mit derselben Bitrate haben, da die Verschlechterung aufgrund von Upscaling nicht so schlimm ist wie die Verschlechterung aufgrund niedriger Bitrate.

Der Vergleich verschiedener Codecs nach ihrer Bitrate ist nur möglich, wenn Sie mehr über den Inhalt und die einzelnen Codierungseinstellungen wissen. Die Bildrate ist ebenfalls sehr subjektiv und sollte in Ihre Messungen einbezogen werden, wenn sie deutlich unter 25 Hz liegt.

Um zusammenzufassen, betonen Sie die Bitrate stark, wenn es das einzige ist, was Sie haben. Vergiss nicht auch deine Augen zu benutzen :)


Zunächst einmal, als der ursprüngliche Autor der Frage, tut es mir leid, dass ich vorher keine Kommentare abgegeben habe. Der Beitrag ist in der Tat super und sehr geschätzt. Leider kann ich das nicht als Antwort auf meine ursprüngliche Frage akzeptieren. Der Grund ist: Ich habe die Frage absichtlich hier und nicht auf StackOverflow gepostet, weil ich einen Vorschlag für ein vorhandenes, einsatzbereites Tool haben wollte. Sei es eine Frage, wie man ein solches Tool schreibt, Ihre Antwort wäre der absolute Gewinner. Tut mir leid, ich kann nicht alles von Grund auf neu schreiben, also lassen Sie den Benutzer in mir Fragen stellen und Antworten erwarten (vielleicht nicht gestern oder heute, vielleicht in Zukunft ;-)
pfalcon

1
Tolle, informative Antwort. Auch wenn es keine direkte Antwort ist, möchte ich, dass sich die Leute die Zeit nehmen, um solches Informationsmaterial zu schreiben. +1
SuperDuck

1

Mir ist kein Tool bekannt, mit dem Sie eine endgültige Empfehlung oder Bewertung erhalten. Mit FFmpeg können Sie jedoch alle in der Frage aufgeführten Details ausgeben.

In der Befehlszeile listet ffmpeg -i die Informationen aus dem Video auf. Von dort aus können Sie ein Skript schreiben, um die Informationen zu analysieren und nach Bedarf zu gewichten.


Danke, ja, das habe ich ein paar Stunden lang gemacht, bevor ich mich entschlossen habe zu fragen, ob es ein besseres "magisches" Werkzeug gibt ;-)
pfalcon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.