Welcher Wert sagt mir, wie stark ein Video komprimiert wurde?

  • Nun ist es ja so, dass wenn man Videos in x264 codet, man in den Presets die "Rechenstärke" einstellen kann. Ein Beispiel: sagen wir mal einen konstanten "crf"-Faktor und dabei kann ich wählen zwischen "Ultra Fast" über "Medium" bis "Placebo". Die Bildqualität ist dann immer die Gleiche aber die Grösse des Videos und die Rechenpower mit der es zu decodieren ist, ändern sich. Mein PC hat keine Probleme "Very Slow"-codierte Videos abzuspielen. Aber schon ein etwas älterer PC eines Bekannten oder Programme ohne Hardwareunterstützung für h264 zicken mit den stark komprimierten Videos rum. Nun ist meine Frage, ob es ein Analysetool gibt, was mir ausliest, wie rechenintensiv ein Video encodet wurde. Irgendeinen Wert, an dem man sich da orientieren kann, wenn man Video aus anderen Quellen hat und nicht weiß wie sie encodet wurden.

    Seht es mir nach, wenn ich ein paar Fachbegriffe unsauber verwendet habe.

  • Ziemlich unsauber, ja.

    Die Presets legen zwar mittelbar fest, wie viel Aufwand der Encoder betreibt, um nach Ähnlichkeiten zu suchen, die sich verkürzt abspeichern lassen. Man kann aber nicht garantieren, dass ein aufwändigeres Preset zuverlässig kleinere Ergebnisse erzeugt als ein weniger aufwändiges. Presets steuern eine gewisse Anzahl an grundlegenden Optionen in einem gewissen Verhältnis zueinander. Worauf sie konkret Auswirkung haben, kann man in der x265-Online-Dokumentation nachschauen.

    Zu den Optionen mit den deutlichsten Auswirkungen auf die "Komplexität" gehören die Anzahl von Referenz-Frames und die Anzahl maximal aufeinander folgender B-Frames, weil sie dann auch entsprechend hohe Anforderungen an den Decoder stellen, schnell genug voraus zu decodieren und hinreichend viele codierte wie auch decodierte Frames zwischenzuspeichern, bis sie dargestellt werden können.

    Die Angabe "Profile@Level" (bei HEVC auch Tier) gibt Auskunft darüber, welche Komplexität ein Wiedergabegerät zusichert, schnell genug decodieren zu können. Diese Grenzwerte sind in den Spezifikationen genormt (z.B. HEVC-Profile). Leider findet man außer bei verbreiteten und genormten Geräteklassen (wie Blu-ray-Playern) eine solche Angabe sonst kaum beim Hersteller, teils nicht mal im Handbuch. Eventuell im Internet, wenn sich andere Nutzer die Mühe gemacht haben, entsprechend komplexe Videos auszutesten. Encoder wie x264 und x265 schätzen über Bildfläche, Framerate und Bitraten ab, mit welchem Profile@Level sie einen encodierten Videostream markieren sollten, um einen vernünftigen Grenzwert anzugeben.

  • Ja, wie LigH sagt. Man kann auch nicht direkt von preset auf Dekodierkomplexität schließen. Eigentlich sind dafür die Profile und Level gedacht, aber auch da gibt es noch Unterschiede. Und wie er sagt die Anzahl der Referenzframes (welche aber im Level berücksichtigt sind), welche aber hauptsächlich den Speicherbedarf beeinflussen, nicht so sehr die CPU. Manche (Hardware-)Dekoder haben da einfach ein hartes Speicherlimit.

    Neben Profil/Level:
    - Bitrate. Je höher die Bitrate, je mehr muß der Dekoder verarbeiten.
    - Auflösung/FPS (je mehr ... je mehr ...)
    - CABAC
    - Deblocking
    - weightb
    - weightp

    Letztendlich könnte man z.B. --preset placebo --tune fastdecode --vbv-maxrate 20000 --vbv-bufsize 20000 --bitrate 5000 --level 40 nutzen und das könnte wesentlich einfacher zu dekodieren sein als z.B. --preset faster --bitrate 15000

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!