Wann welche Levels?

  • Hallo zusammen,

    ich bin über ein anderes Problem enger in Kontakt mit den Levels beim kodieren mit dem H.264-Standard gekommen und bin doch ein wenig verunsichert bezüglich der Einsatz-Szenarien der verschiedenen Levels. Gibt es da ein paar Grundlegende Dinge, die man dazu festhalten kann?

    Macht es z.B. Sinn, eine Sat-HD-Aufnahme in Level 3.2 mit 4.0 oder 4.1 zu kodieren? Oder wäre ein 3.2 für die Wiedergabegeräte besser? Oder den Original-Level immer beibehalten? Wirkt sich das ganze auf die Qualität oder Dateigröße aus?

    Oder wie schaut es aus bei 1080er-Auflösungen? Macht das Umrechnen von BDs mit 4.0 Sinn? ODer dabei doch immer 4.1 verwenden?

    Ich habe hier zwar einiges gelesen, doch meistens ging es da um spezifische Probleme. Die immer weider genannten Tabellen konnten mir zwar einen guten Überblick geben, aber ich möchte eigentlich nur wissen womit ich am besten Aufnahme XY kodiere...ich möchte die Aufnahmen nicht bis in Kleinste optimieren...nur möchte ich auch nichts verschenken...

    Vielleicht kann mir da jemand ein wenig bei der Entwirrung helfen...


    Besten dank

    Lapje

  • Für die Wahl des passenden Profile@Level sind verschiedene Faktoren des Abspielgerätes wichtig, u.a. wie schnell die Daten von ihrer Quelle gelesen werden können (man bedenke langsame optische Medien / Netzwerke / USB-Sticks / Speicherkarten...) und wie schnell sowie mit welcher maximalen Komplexität der Decoderchip das Video decodieren kann. Die Geschwindigkeit, mit der der Decodierpuffer gefüllt bzw. geleert werden kann, bedingt auch seine Größe, deshalb sollte man x264 immer auch VBV-Size/Rate-Parameter geben, wenn man unter den Grenzen eines Profile@Level bleiben möchte.

  • Goldwingfahrer
    Das ist eine der Tabellen, welche ich meine, welche mir bei meinem Problem aber nur bedingt weitergeholfen hat. Viele Sat-Aufnahmen sind z.B. bei mir in Level 3.2 und Level 4.0 ausgestrahlt...nur wenn ich jetzt das ganze Umrechne, sollte ich dann bei einer 3.2-Austrahlung auch bei 3.2 bleiben? Bringt 4.0 da irgendwas? Oder gar 4.1?

    LigH
    Abspielgeräte werden entweder Netzwekplayer oder Tablets/PCs sein. Nur da sind ja immer verschiedene Decoder-Chips drinn.

    Mein Gedanke dahinter: Ich möchte jetzt z.B. nicht in 4.1 kodieren, wenn die Erhöhung bei einer Austrahlung in 3.2 oder 4.0 überhaupt nichts bringt, es aber zu Nachteilen bei der Wiederhabe kommen könnte.

    Oder direkt gefragt: Hätte eine Erhöhung des Levels irgendwelche Vorteile?

    Gibt es überhaupt einen "Richtwert", mit dem man immer auf der richtigen Seite wäre und welche sowohl bei kleinen, langsamen als auch bei großem und schnellen Speicher keine Nachteile besitzt?

  • Mein Gedanke dahinter: Ich möchte jetzt z.B. nicht in 4.1 kodieren, wenn die Erhöhung bei einer Austrahlung in 3.2 oder 4.0 überhaupt nichts bringt, es aber zu Nachteilen bei der Wiederhabe kommen könnte.

    Oder direkt gefragt: Hätte eine Erhöhung des Levels irgendwelche Vorteile?


    Mir scheint, Du erstellst da gedanklich einen "falschen Zusammenhang". Die verwendeten Levels bei einem re-Encoding haben, rein bildtechnisch, absolut gar-nichts mit den verwendeten Levels des Eingangsmaterials zu tun. Vereinfach gesagt sind die Levels ein Maß dafür, wieviel Komplexität der Encoder verwenden darf, um viel möglichst viel Qualität bei möglichst kleiner Bitrate zu erzielen. Von daher macht es absolut Sinn, ein zB. Levels 3.0 - Eingangsmaterial mit zB. Levels 4.1 beim Re-Encoding zu Kodieren. Der Encoder bekommt irgendwelches Bildmaterial, und dieses Bildmaterial kann er um so effizienter kodieren, je höhere Levels er verwenden kann.

    Die einzig entscheidende Frage ist, auf welcher Hardware das Ergebnis potentiell abgespielt werden soll. Dafür muss man gegebenenfalls entsprechend kleine Levels verwenden. Aber einen Bezug auf die Levels-Einstellungen des Eingangsmaterials gibt es nicht.

  • Ok, dann hatte ich da ein Verständnisproblem, denn ich dachte bisher, dass für die effizients die Profile zuständig wären, also im Bezug auf die Möglichkeiten des Decoders.

    Wenn ich das richtig verstehe, müsste dann mit höherem Level die Datei kleiner werden, richtig? Bei einem Test ist aber gerade das Gegenteil passiert: Eine ca. 90 Minütige Sat-Aufnahme hat unter 4.1 3,61 GB, unter 4.0 lediglich 3,39 GB, ebenso betrug der Level 3.2 3,39GB. Oder habe ich da wieder was falsch verstanden?

    Ok, aber wenn die Wahl der Levels nur Auswirkungen auf die Dateigröße haben und nicht auf die Bildqualität kann ich ja ein wenig mit den Levels runtesten und schauen, wie groß der Dateigewinn wirklich ist...wenn das wie oben "nur" knapp 200MB sind, wäre mir die Kompatilität zu verschiedenen Geräten doch wichtiger...

  • Die Profile beschränken (wie Baseline) oder erweitern nicht nur die Encodiereffizienz, sondern auch andere Funktionen, mit denen ein Decoder umgehen können müsste, um zu diesem Profil kompatibel zu sein (z.B. 10 bit Komponententiefe, feineres Chroma-Subsampling).

    Und auch die Level haben nichts unmittelbar mit der Effizienz zu tun. Sie geben vor allem die Mindestleistung vor, die ein Decoder erreichen muss, um dazu kompatibel zu sein.

    Aussagekräftige Größenordnungen für die beiden sind beispielsweise "Makroblöcke pro Frame" (davon ist die Bitrate mittelbar abhängig, die Bildfläche, die Decodierpuffergröße...) sowie "Makroblöcke pro Sekunde" (hat ebenfalls Einfluss auf die maximale Bildfläche, aber auch die erlaubte Encodiereffizienz).

    Alles ist aber ein Zusammenspiel von vielen Faktoren. Wenn zum Beispiel wegen Decoderleistung und Decodierpuffergröße die Anzahl der Referenz-Frames eingeschränkt werden muss, verschlechtert das die Effizienz der Encodierung, also Qualität pro Bitrate; man bräuchte mehr Bitrate für geringere Qualitätsverluste, kann diese aber nicht zu weit erhöhen, sonst wird der Decodierpuffer entweder überfüllt oder kann nicht schnell genug von einem langsamen Medium gefüllt werden, weil die Videobitrate die Leserate deutlich übersteigt. Sehr langsame Decoderchips für mobile Geräte, die auch nur eher kleine Decodierpuffer haben, erlauben eventuell nur das Baseline-Profile, um noch vernünftig große Bildflächen bei halbwegs flüssigen Frameraten zu unterstützen.

    Man muss schlicht wissen, dass das alte Nicht-Smart-Handy noch Baseline@1.3 unterstützt, typische Blu-ray-kompatible Viel-Media-Player dagegen meist High@4.1, und DVB-S2-Tuner wohl oft nur Main oder High Profile @ Level 3.x; ich kenne aber leider keine Übersicht, die das ganze zusammenfasst und auch Gründe dafür erklärt.

    Ganz wichtiger Punkt: Profile@Level begrenzen nicht die Datenrate an sich, nur Nebenbedingungen, die ihrerseits Einfluss auf diese haben.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    Einmal editiert, zuletzt von LigH (13. Juli 2013 um 21:03)

  • Ok, um mal für mich da einen Faden zu finden:

    Im Grunde kann hier gar kein Kompromiss gefunden werden, weil zu viele Faktoren zusammen kommen und eine Verschlechterung der Bildqualität durchaus möglich ist, oder?

    Im Grunde ist man nur auf der sicheren Seite wenn man für jedes Gerät exact die Möglichkeiten rausfindet und spieziell dafür codiert (mit der Gefahr dass man für jedes Gerät extra kodieren muss) oder man muss Qualitätseinbußen hinnehmen...

    Kann man das so sagen?

  • Eine Frage hätte ich aber noch: Sind die Levels irgendwie abhängig von der Auflösung? In den Tabellen stehen diese ja immer mit dabei. Oder könnte ich auch für eine 720*576-Auflösung Level 4.1 verwenden?


    Besten dank

    Lapje

  • Die Auflösungen haben ihren Einfluss: Je höher, umso mehr Makroblöcke pro Frame, umso mehr Makroblöcke pro Sekunde bei gleicher Framerate.

    Wenn du bei 576i über 24 Mbps kommst, wäre das nicht mehr zu Level 3 kompatibel. Ob das aber bei der Bildfläche allein mit feiner Quantisierung zu erreichen ist?

    Wenn ein zu hohes Level im Header eingetragen ist, dessen Grenzwerte eigentlich gar nicht erreicht werden, besteht die Gefahr, dass Player solche Streams von vorn herein ablehnen, obwohl sie diese nach ihren tatsächlichen Eigenschaften decodieren könnten. Es ist also durchaus sinnvoll, ein Level anzustreben, das niedrig genug ist, um mit vielen Geräten kompatibel zu sein, aber nicht zu niedrig, um sich seine Encodierung nicht durch zu enge Grenzen zu verschlechtern.

Jetzt mitmachen!

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