Lenna liebt es gut auszusehen - schließlich ein Model. Es gibt Legenden, dass das Hinzufügen zum Titel eines Artikels im Zusammenhang mit der Verarbeitung visueller Daten +5 eine Chance für Pluspunkte bietet.Ich werde weiterhin die Funktionen der Videodienste offenlegen. Heute Hinweise zu Codierungsoptionen und deren Auswahl.
Erster TeilDie meisten Codecs bieten ziemlich ausgeglichene Standardwerte, sodass Sie ohne lange Auswahl von Parametern ein normales Ergebnis erzielen können. Wenn es jedoch um ein großes Archiv an Videomaterial, Einschränkungen der Bitrate, Überlegungen zur Kompatibilität mit Client-Geräten und den vernünftigen Wunsch geht, die Qualität des Originals beizubehalten, wird alles interessanter.
Leider ist der magische Knopf "sehr gut codieren" nicht vorhanden. Wie das
caniuse Analog zum Codieren von Parametern. Müssen die Funktionen der Codecs verstehen.
Intro: Profile
Es gibt so viele Einstellungen und Parameter für H264, dass die Entwickler selbst beschlossen haben, eine Liste von Profilen zu erstellen, um nicht verwirrt zu werden - „gute“ Konfigurationen für verschiedene Zwecke. Standardprofile haben viel identifiziert; Indem Sie Ihre eigenen Codierungsparameter festlegen, erstellen Sie außerdem Ihr eigenes Profil, wodurch alle Benutzer völlig verwirrt werden. So stellte sich leider wie immer heraus.

Ursprünglich wurden Profile erstellt, um zu bestimmen, ob das endgültige Video auf dem gewünschten Gerätetyp abgespielt wird. Jetzt gibt es keine eindeutige Trennung der Player nach Gerätetyp und Profil.
In der Praxis würde ich anhand der Dekodierungsintensität der Ressourcen drei Gruppen von Parametern herausgreifen:
- mit deaktiviertem CABAC; bedingt Haupt- und Basisprofile. Sie können weiterhin für Streaming verwendet werden, das empfindlich auf Verzögerungen reagiert.
- mit aktiviertem CABAC; relativ hochkarätig. Für alles. Die meisten modernen (und nicht so) Geräte können so etwas spielen. Die Steigerung der Effizienz im Vergleich zu Haupt - 20% +;
- mit Unterstützung für Zehn-Bit-Abtastung und andere erweiterte Parameter. Bedingt Hi10P. Das Problem bei solchen Profilen ist der fast vollständige Mangel an Hardware-Unterstützung und die erhöhten Anforderungen an die Dekodierungsausrüstung. Telefone, auch Top-End-Telefone, können mit solchen Dateien nicht umgehen. Es kann für eine persönliche Bibliothek verwendet werden, wenn Sie mit Ihrer Ausrüstung vertraut sind. Weitere 10-20% Effizienzsteigerung.
Das Konzept der Profile für andere Codecs ist nicht so entwickelt wie in H264. Für sie können wir davon ausgehen, dass der Codec, wenn er unterstützt wird, vollständig unterstützt wird und die Einschränkung während der Wiedergabe nur eine übermäßig hohe Bitrate oder ein anderer Parameter sein kann, der deutlich überbewertet ist. Mit der Verbreitung von VP8- und VP9-Hardware-Decodern kann sich die Situation jedoch ändern.
Nun zu den einzelnen Parametern.
Farbraum
Die Wahl des Farbraums hat praktisch keinen Einfluss auf die Codierungseffizienz. Dieser Parameter kann der Codec-Auswahl überlassen bleiben (dies ist wichtig bei der Verarbeitung von nicht codierten Rohdaten), wenn es sich nicht um eine Funktion handelt: Viele Player verarbeiten Farbrauminformationen sehr spezifisch, sodass das Video für die meisten Benutzer möglicherweise mit Farbverzerrungen angezeigt wird (in meistens grün).
Um die Farben für die meisten Player beizubehalten, müssen verschiedene H264-Videos an verschiedenen Stellen codiert werden:
- für SD (Breite <1280) - BT.601
- für HD (Breite> = 1280) - BT.709
Es gibt eine ausgezeichnete
Studie aus dem Jahr 2012. zu diesem Thema. Leider ändert sich die Situation mit solchen Fehlern sehr langsam, und obwohl einige der Testergebnisse aus diesem Artikel nicht mehr relevant sind, müssen solche Funktionen noch berücksichtigt werden. Es besteht die Möglichkeit, dass Sie das Video die ganze Zeit mit den falschen Farben gesehen haben - und es stellt sich heraus, dass dies keine Entscheidung eines Regisseurs war.
Das Problem ist für H264-Decoder bekannt, andere Formate haben dieses Problem möglicherweise nicht.
Bildrate
Wenn es sich bei Ihrer Quelle nicht um Streams von Spielen oder Action-Videos handelt, ist es sinnvoll, die obere Bildrate auf 25 bis 30 Bilder zu beschränken. Je weniger Bilder vorhanden sind, desto mehr Daten verbleiben, um ein einzelnes Bild zu beschreiben. Es ist besser, diesen Wert um einen Faktor zu verringern, damit der Bildsprung gleichmäßig ist, da das Video sonst möglicherweise langsamer wird.
Es gibt so etwas wie eine variable Bildrate. Die Arbeit mit VFR ist aus zwei Gründen unpraktisch: Erstens gibt es Bitratenpeaks in Hochfrequenzbereichen, die den Puffer sofort leeren; Zweitens erschwert VFR die Erstellung des Konvertierungsplans und erzwingt die Verwendung von Q-Parametern (darüber habe ich im ersten Artikel geschrieben).
Gop Größe
Bildgruppen sind Blöcke, in denen einige Bilder auf die Daten anderer verweisen können. Eine Erhöhung der GOP-Größe verbessert die Codec-Leistung im Austausch für erhöhte Speicheranforderungen. Größere Werte sind besonders effektiv für Dateien mit der gleichen Art von zyklischen Bewegungen (Sie wissen, was ich meine). Bei großen Werten kann es auch zu Problemen beim Zurückspulen des Videos kommen, da Weitere Daten müssen wiederhergestellt werden.
Der Name des Parameters sowie die Maßeinheiten können von Codec zu Codec unterschiedlich sein - siehe Dokumentation.
Scheiben
Um die Dekodierung (und Kodierung) zu beschleunigen, kann Video in Teile mit niedrigerer Auflösung unterteilt werden. Die Idee ist, dass die Verarbeitung von vier Videos mit einer Auflösung von beispielsweise 1280 x 720 einfacher ist als eines, jedoch 2560 x 1440. Dies ist bei höheren Auflösungen als FHD sinnvoll. Je mehr Teile vorhanden sind, desto geringer ist die Effizienz des Codecs. Die Verwendung dieser Trennung vereinfacht auch die Multithread-Verarbeitung.
Anamorphotische Pixel
Rechteckige Pixel erscheinen, wenn sich das Seitenverhältnis und das Verhältnis von Pixelbreite zu Höhe unterscheiden - Breitbild-DVDs, bei denen 16: 9-Videos eine Auflösung von 704 × 480 (3: 2 mit analoger Mehrwertsteuer und windkorrigiert) haben. Das Abspielen solcher Videos verursacht keine Probleme, aber beim Codieren müssen Sie sowohl die Auflösung als auch das Seitenverhältnis berücksichtigen. Andernfalls ist es einfach, anamorphotische Bilder entweder in Standardquadratpixel mit Effizienzverlust (bis zu ~ 35%!) Zu konvertieren oder sogar horizontal etwas zu reduzieren.
Bitrate Control
Es gibt drei Hauptmodi von Codecs, die mit der Bitrate verbunden sind:
- konstante Bitrate, CBR, wenn die Qualität proportional zur Komplexität der Szene abnimmt;
- konstante Qualität, const Q VBR, wenn die Bitrate proportional zur Komplexität der Szene zunimmt;
- begrenzte Bitrate und Qualität - klassischer VBR.
Es ist anzumerken, dass die meisten Encoder (einschließlich ffmpeg) die Codecs beim Einstellen einer Bitrate nicht in den CBR-Modus versetzen - Dateien werden von VBR erstellt, wobei Einschränkungen nicht immer in der Dokumentation definiert sind (der CBR-Modus wird aktiviert, normalerweise durch Einstellen der gleichen Minrate und Maxrate).
Für die Online-Wiedergabe (und für das Streaming) ist die eingeschränkte VBR gut geeignet. Es bietet eine bessere Qualität als CBR und ermöglicht es Ihnen, den Stream in den Internetkanal einzupassen.
Die Wahl der Maxrate / Minrate hängt vom Kanal des Kunden ab. Ein Spread von mehr als 20% ist besser nicht zu tun.
Multi-Pass-Codierung
Es ist schwierig, die Verteilung von Daten in einer Datei im VBR-Modus vorherzusagen. Codecs müssen raten, was nicht immer passiert. Im Mehrfachdurchlaufmodus ordnet der Codec zuerst die erforderliche Bitrate zu und codiert dann. Auf diese Weise wird die Videoqualität in komplexen und dynamischen Szenen verbessert (
Beispiel : Achten Sie auf die Anzahl der „Moiré“ -Elemente und die Anzahl der Übergänge zwischen den Szenen). Da der Codec beim ersten Durchgang entgegen der landläufigen Meinung nur die Quelldatei analysiert, erfordert die Verarbeitung in diesem Modus nicht mehr als die doppelte Zeit, sondern nur 10-15%.
-tune
Für verschiedene Arten von Quellmaterial wurden mehrere Voreinstellungen erstellt, mit denen einige grundlegende Codierungsparameter feinabgestimmt werden können - z. B. Deblocking-Filterpegel und psycho-visuelle Optimierungsparameter. Die Verwendung dieser Voreinstellungen verbessert die Videowahrnehmung und funktioniert gut, wenn Sie den Quellentyp im Voraus kennen oder wenn Sie über einen strukturierten Satz von Videos verfügen (bei Massenverarbeitung).
Voreinstellungen:
- Film - für Filme und alles mit einer komplexen Rahmenstruktur. Dies ist definitiv ein Film;
- Animation - für Videos mit großen Flächen. Das heißt, es ist besser, mit der Animationsvoreinstellung zu codieren, und dies ist ein Film, trotz der Tatsache, dass die Animation;
- Standbild - für Videos, in denen fast keine Bewegung stattfindet; Gute Optimierung für Songs im MP4-Format, bei denen das Album-Cover den gesamten Video-Hintergrund darstellt (jemand sagt ihm, dass selbst Flac 10 Minuten lang keine 300 MB wiegen kann!).
- Getreide - zum Codieren von "verrauschten" Quellen wie Überwachungskameras;
- psnr / ssim - um die Wirksamkeit der verbleibenden Parameter des Codecs zu bewerten;
- Fastdecode - erzwungenes Hauptprofil für schwache Geräte;
- Null-Latenz - wie der Name schon sagt, für Streaming mit geringer Latenz.
Pixelformat
Das Format und die Bitigkeit wirken sich stark darauf aus, wie Dateien komprimiert und nicht komprimiert werden und in welcher Form die Qualität verloren geht. Die wichtigsten Parameter, die das Pixelformat beschreibt, sind:
- eine Möglichkeit, Farbe in Komponenten zu zerlegen - YUV, RGB;
- Farbunterabtastungsparameter (oh wie! Chroma-Unterabtastung ist vertrauter), wenn einige Farbkomponenten mit niedrigerer Auflösung gespeichert werden;
- Tiefe der Farbkomponenten in Bits.
Eine bewusste Wahl des Pixelformats erfordert eine separate Analyse und Sammlung von Material und hängt stark von der Art des Ausgangsmaterials ab.
Kurz:
- Nicht alle Codecs (und vor allem Decoder) unterstützen mögliche Formate.
- Die Arbeit mit einigen Formaten ist ressourcenintensiver - Hi10P unterscheidet sich von einem hochkarätigen Programm darin.
- Das Arbeiten mit unterabgetasteten Formaten kann zu einer spürbaren Steigerung der Komprimierungseffizienz führen, es ist jedoch schwieriger, den Qualitätsverlust zu kontrollieren.
Interlacing
Interlacing wurde erfunden, um die wahrgenommene Bildrate bei minimalen Kosten zu verdoppeln - Bitrate und Auflösung sind gleich, aber die Frequenz ist höher. Bei schneller Bewegung werden jedoch die Zähne sichtbar - die Linien des vorherigen Rahmens. Sie können den Effekt entfernen, ohne Frames fallen zu lassen und die vertikale Auflösung mit Filtern nicht zu verringern, aber sie verringern die Klarheit. Wenn das Video im Browser abgespielt wird, ist es besser, Interlacing während der Codierung zu filtern, z Echtzeitfilterung auf dem Client liefert nicht die besten visuellen Ergebnisse.
Alles zusammenfügen
Beispiel für x264:
ffmpeg -i [] -c:v libx264 -b:v [bitrate]
Natürlich war es in einem Artikel nicht möglich, alles zu behandeln, aber ich bin sicher, dass dieses Material ausreichen wird, um die Qualität vieler Videos zu verbessern.
Lesen Sie die Dokumentation und experimentieren Sie.
Material:
ffmpeg.org/ffmpeg-all.htmlen.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profilesen.wikipedia.org/wiki/Chroma_subsamplingen.wikipedia.org/wiki/Color_spaceen.wikipedia.org/wiki/YUVZusätzlich zu dem
Beispiel aus dem letzten Artikel habe ich etwas über eine andere Installation meines Codes erfahren -
klicken Sie auf . Ich habe versucht, Beispiele in den Artikel von diesen Seiten zu nehmen, aber trotzdem:
* Ich habe keine direkte Beziehung zu den Autoren der genannten Websites und teile möglicherweise nicht deren Ansichten und Meinungen. Ich kann mich nicht zu den Entscheidungen äußern, wem und wie der Zugriff auf den Code gewährt wird.Bereit, Fragen zu beantworten.