Videokodierung - Platzverschwendung

Ich stehe vor einem häufigen Problem, für das ich keinen Begriff finden kann: Ich habe ein paar VHS-Rips von geringer Qualität, die mit einem bestimmten Apple ProRes-Codec codiert wurden (im Zusammenhang mit dieser speziellen Frage irrelevant) und mehrere GB Speicherplatz beanspruchen. Ich weiß mit Sicherheit, dass der Videoinhalt von so geringer Qualität ist, dass er nicht mehr Platz beanspruchen sollte als beispielsweise eine XDCAM EX 1080 HD-Datei mit längerer Länge und höherer visueller Qualität.

Wie ist es ähnlich möglich, dass eine Videodatei zehnmal größer wird, ohne dass die Wiedergabetreue zunimmt, wenn sie mit einem verlustfreien Codec oder mit einer höheren Bitrate codiert wird? Ich würde vermuten, dass der Encoder bei der Neucodierung irgendwie "zusätzliche" Informationen hinzufügt ... aber offensichtlich ist es unmöglich, dass eine Low-Fidelity-Datei an Qualität gewinnt, wenn sie lediglich mit höheren Qualitätseinstellungen neu codiert wird ... na und geht es hier weiter?

Gibt es ein Wort, um dieses Phänomen zu beschreiben? Wie kann ich außerdem sicherstellen, dass meine Transcodierung die Dateigröße nicht ERHÖHT? Ich habe nach Tools gesucht, die die geeignete Bitrate für Dateien messen können (wie die Low-Fi-VHS-Rips, die irgendwie bis zu 10 GB aufnehmen können ... was nicht passieren sollte), aber ich kann solche Tools nicht finden. .. Was ich in dieser Situation tun möchte, ist, diese riesigen Dateien in ein geeignetes Format mit einer angemessenen Dateigröße neu zu codieren, ohne sichtbare Qualität zu verlieren ...

Antworten (3)

Das ist kein Phänomen, das ist Kompression. Es funktioniert einfach so.

Die Komprimierung nimmt eine Eingabe, führt sie durch einige Algorithmen und erhält dann eine Ausgabe, die entweder genau (verlustfrei) oder ungefähr (verlustbehaftet) mit der ursprünglichen Eingabe übereinstimmt. Sie werden nicht wie normale Videodaten als Satz von Pixeln gespeichert, sondern eher als eine Form von Daten, die den ursprünglichen Satz von Pixeln mit weniger Platzbedarf modellieren.

Wenn Sie ein Video decodieren, arbeitet es mit dem komprimierten Format und generiert einen Strom von Pixelwerten, der als tatsächliches Video wiedergegeben werden kann. Wenn Sie von einem Format in ein anderes umcodieren, durchläuft das Video zuerst diesen Decodierungsprozess, um eine Reihe von Pixelfarbwerten zu erhalten, und durchläuft dann die Codierung für das neue Format.

Was Sie zu vermissen scheinen, ist, dass es egal ist, wie hochwertig das tatsächliche Signal ist, das in die Codierung einfließt, es funktioniert mit allem, was Sie ihm geben. Sie könnten ein von Artefakten durchsetztes, körniges, unangenehmes und verrauschtes Video in niedriger Qualität als verlustfreies Format speichern und würden am Ende ein perfekt erhaltenes, von Artefakten durchsetztes, körniges, unangenehmes und verrauschtes Video in niedriger Qualität erhalten. Es würde keine weitere Verschlechterung der Qualität geben, aber Sie haben immer noch ein beschissenes Video, und es nimmt viel Platz in Anspruch, da es keine Annäherung an das beschissene Video speichert, sondern die genauen Daten.

Wenn Sie stattdessen eine verlustbehaftete Komprimierung verwenden würden, die der Qualitätsstufe des Videos "ähnlich" ist, würden Sie noch mehr schlechte Artefakte einführen und jeden Anschein des tatsächlichen Signals verlieren, das im Video verblieben ist.

Dieses Prinzip wird auch als Verlustgenerationen bezeichnet . Es ist größtenteils ein Überbleibsel aus den analogen Tagen, als keine Kopie verlustfrei war und daher die Anzahl der Kopiengenerationen auf ein Minimum beschränkt werden musste, um die Qualität zu erhalten. Mit dem digitalen Zeitalter wurde dieses Problem stark gemildert, da eine digitale Datei perfekt kopiert werden kann, aber sie lebt immer noch in der Transcodierung weiter, wo Generationen von Verlusten auftreten.

Dieser Punkt erklärt eigentlich auch, warum die SD-Videodateien so viel größer sind als erwartet. Die meisten Verbraucher sind an Endbenutzer-Komprimierungsformate mit relativ kleinen Dateigrößen gewöhnt. Diese Dateigrößen sind großartig für Endbenutzer, da sie nicht bearbeitet oder neu codiert werden müssen, aber solche Formate fallen schnell auseinander, wenn Sie versuchen, sie erneut zu codieren, aufgrund ihrer geringen Dateigröße und des großen Verlusts (selbst wenn es ist für einen normalen Betrachter nicht ohne weiteres ersichtlich.)

DV-Videos in Produktionsqualität verbrauchten ungefähr alle 4,7 Minuten ein Gigabyte oder mehr an Speicherplatz. Daher ist es nicht unerwartet, dass Ihre hochwertige SD-Aufnahme (selbst wenn die Quelle selbst Mist war) für Verbraucherstandards „groß“ ist. Wenn Sie die Videos nicht bearbeiten müssen, ist es völlig in Ordnung, sie als fertige Videos in eine Dateigröße mit niedrigem Bitratenverbrauch zu transcodieren. Ich würde empfehlen, für diesen Zweck die 2-Pass-VBR-Codierung zu verwenden, h.264 sollte gut funktionieren und Sie könnten eine niedrige Bitrate verwenden.

Bitraten bestimmen letztendlich die Dateigröße bei der Komprimierung. Die Bitrate definiert die Datenmenge, die zum Codieren des Videos verwendet werden darf, und grob gesagt, der Komprimierungsalgorithmus wird das Filmmaterial so gut wie möglich mit der angegebenen Bitrate annähern. Je niedriger die Bitrate, desto kleiner die Datei, aber desto geringer die Qualität und desto weniger können Sie das Video in Zukunft ohne katastrophalen Qualitätsverlust neu codieren.

Welche Ebenen Sie ohne merklichen Qualitätsverlust für eine endgültige Ausgabe verwenden können, hängt wirklich vom Inhalt ab und ist viel zu weit gefasst, als dass eine Q/A-Site ohne Videobeispiel sie sich ansehen könnte. Kompression ist ein unglaublich komplexes Gebiet mit vielen Optionen, und es gibt Menschen, die nichts anderes tun, als sich ihr ganzes Leben lang mit der Kompression zu beschäftigen. Die Farben, die Menge an Bewegung, die Menge an Rauschen usw. haben alle einen Einfluss darauf, wie viele Daten tatsächlich erforderlich sind, um das Video so zu speichern, dass der Endbenutzer keine Artefakte bemerkt.

Verlustgenerationen war der Begriff, nach dem ich gesucht habe. Manchmal vergesse ich, dass die Komprimierung so komplex ist, wie es scheint, also muss ich wohl einfach mit den Einstellungen herumspielen, bis ich einige Einstellungen finde, die für die Archivierung der VHS-Rips funktionieren. Vielen Dank! Dies war ein hartes Unentschieden – Die andere Antwort war wirklich großartig, da sie einige leicht verständliche Informationen darüber gab, wie die Videokomprimierung funktioniert.

Um dies zu verstehen, müssen Sie verstehen, wie Codecs tatsächlich funktionieren. Ein einfacher unkomprimierter Videoframe, zB ein einzelnes Bild, ist ziemlich groß. Ich spreche von einer Bitmap, nicht von einem verlustfrei codierten Video, überhaupt keiner Codierung, nur einfachen Pixelinformationen.

Hier ein einfaches Beispiel eines Full-HD-Frames für eine gewisse Perspektive: Wir haben eine Auflösung von 1920x1080Pixeln 2073600. Jetzt hat jedes Pixel drei Farbwerte. Das ist normalerweise ein 8-Bit-Wert pro Farbe (es könnten aber auch 10/12/16 oder 32 Bit sein). Wir haben also, 2073600*3*8was gleich ist 49766400 bits. Um Bytes zu erhalten, müssen wir durch 8 teilen und erhalten 6220800 Byte oder 5,93 MB. Das sind also fast 6 MB pro Frame, für ein 30-FPS-Video sind das 178 MB pro Sekunde ! Ein 10-Minuten-Video hätte wahnsinnige 104 GB.

Glücklicherweise haben einige wirklich kluge Leute alle Arten von Algorithmen entwickelt, um einen Rahmen auf intelligentere/kürzere Weise zu definieren, während er immer noch die vollständigen Informationen der ursprünglichen Bitmap enthält. Das würden wir einen verlustfreien Codec nennen, nur eine andere Art, dieselben Informationen zu speichern.

Wenn Sie also Ihre VHS aufnehmen, erhält Ihr Aufnahmegerät jeden Frame als Bitmap, das es so codiert, wie Sie es ihm sagen. Selbst wenn VHS analoge Komprimierung verwendet und eine insgesamt schlechte Qualität hat, erhalten Sie immer noch denselben Informationsblock wie bei einer Blu-ray, die mit derselben Auflösung und Bittiefe codiert ist, mit der Ihr Aufnahmegerät Ihre VHS aufzeichnet. "Gute Qualität" wird nur durch Ihre Wahrnehmung des Bildes bestimmt.

Denken Sie nur daran, dass Sie beim Decodieren einer Videodatei oder beim Aufnehmen von etwas, um es in Ihrem Videoplayer wiederzugeben oder mit einem anderen Codec zu codieren (transcodieren), immer diese riesige Rohbitmap als Zwischenschritt haben, die "rohen" Informationen das Sie können es verwenden, um es neu zu beschreiben oder einfach auf Ihrem Monitor anzuzeigen.

Jetzt gibt es eine Grenze dafür, wie gut Sie ein Bild kürzer/kleiner beschreiben können, ohne einige Informationen zu verwerfen.

Das sind die sogenannten verlustbehafteten Codecs wie h264. Dies sind noch intelligentere und komplexere Algorithmen, bei denen ein Frame nicht mehr nur ein Frame ist, der Encoder sich mehrere Frames ansieht und versucht abzuschätzen, wie Frames zwischen sogenannten „ Keyframes “ basierend auf den Informationen in diesen Keyframes aussehen werden. Außerdem teilen sie das Bild in mehrere Informationsblöcke auf und versuchen zu „raten“, wie diese aussehen sollen. Da wir wissen, wie wir Informationen erraten, brauchen wir nur einen „Hinweis“, sodass wir beim Decodieren unseres Frames ziemlich genau erraten können, wie dieser Informationsblock ausgesehen hätte, aber es ist keine 100% genaue Darstellung der Quellinformationen.

Deshalb kann es so viel kleiner sein als unsere genaue Darstellung mit einem verlustfreien Codec.

Das ist auch der Grund, warum wir diese Blockierung in stark komprimierten MPEG2-codierten Videos in den frühen Tagen des Internets hatten, h.264 handhabt das viel intelligenter, daher haben wir diese Art von Artefakten nicht mehr wirklich, aber wir bekommen sie diese seltsame Verzerrung manchmal, wenn das Bild auf diese "blockartige Weise" verschmiert, das passiert, wenn es einen Dekodierungsfehler gibt und wir einen Keyframe verpasst haben, um die Frames zwischen dem nächsten Keyframe zu dekodieren.

Um dein letztes Bit zu beantworten. MP4 mit h264-codiertem Video ist im Allgemeinen eine gute Idee. Verwenden Sie ein Tool wie Handbrake , es macht die Aufgabe sehr einfach und Sie haben immer noch viel Kontrolle über das Ergebnis. Wählen Sie entweder eine Voreinstellung oder stellen Sie die „RF“-Einstellung auf 18 ein, um ein visuell verlustfreies Video zu erhalten. Das bedeutet, dass Sie keinen visuellen Qualitätsunterschied sehen werden.

Es sind viele Bits erforderlich, um die Eingabepixel genau oder nahezu genau zu reproduzieren, unabhängig davon, was sie enthalten. Die einzige Ausnahme sind Dinge mit geringer Komplexität wie Bildschirmaufnahmen oder Animationen, bei denen große Bereiche EXAKT die gleiche Farbe haben und/oder Bit für Bit von Frame zu Frame identisch sind.

Der Unterschied zwischen Ihrer Intuition und dem wirklichen Leben ergibt sich aus der Tatsache, dass es die Komplexität ist, die von einem Computer gemessen wird, und nicht die vom Menschen wahrgenommene visuelle Komplexität / Qualität, mit der Codecs arbeiten.

Das Komprimieren des Rauschens ist, wo alle Bits hingehen. Ein Roundtrip durch einen verlustbehafteten Codec verringert tatsächlich die Komprimierbarkeit der Animation, da dann die unscharfen und insbesondere blockierenden Artefakte eingegeben werden, die Sie vom nächsten Codec reproduzieren möchten.

Wenn es eine Möglichkeit gäbe, nur das gewünschte Bild aus dem VHS-Rauschen und den MPEG-Blockierungsartefakten einer typischen Aufnahme herauszufiltern, dh nur die Komplexität zu finden, die Sie beibehalten möchten, und alles andere wegzuwerfen, wäre dies der Heilige Gral von Computervideos. Es wäre per Definition der perfekte Rauschunterdrückungsfilter und etwas, um das herum Sie einen lächerlich effizienten Codec aufbauen könnten.

Alles, was wir jetzt haben, sind grobe Annäherungen, die versuchen zu erraten, was wichtig ist, basierend auf DCT-Koeffizienten oder Wavelets und ähnlichen Maßen zu halten. (z. B. bedeutet eine hohe Energie in höheren Koeffizienten, dass hier wahrscheinlich einige Kanten vorhanden sind, daher wäre es schlimmer als gewöhnlich, diesen 16x16-Pixelblock des Bildes zu verzerren).