1. Cookies optimieren die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklärst Du dich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen
    Information ausblenden
  2. Willkommen im Forum von DIGITAL FERNSEHEN - dem führenden Portal für digitales Fernsehen, Medien und Entertainment. Wenn du hier neu bist, schau dich ruhig etwas um und melde dich an, um am Forengeschehen teilnehmen zu können.
    Information ausblenden

H.264 Profile+Level zu Kompressionsrate

Dieses Thema im Forum "Digitale Audio- und Videobearbeitung" wurde erstellt von Stell, 24. November 2015.

  1. Stell

    Stell Neuling

    Registriert seit:
    24. November 2015
    Beiträge:
    2
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Anzeige
    Hallo zusammen,

    Ich hoffe ich bin hier richtig gelandet mit meinem Anliegen.
    Seit kurzem beschäftige ich mich mit dem Thema Codecs und bräuchte Eure Hilfe beim Verständnis zu den Angaben bezüglich Profile und Level eines H.264 Coders.
    So weit mein Wissen reicht, ist die Angabe des Profile eine Aussage darüber welche der Algorithmen und Kompressionsschritte enthalten sind, wobei der Level aussagt welche Auflösung zusammen mit der Bildwiederholfrequenz und der maximalen Datenrate unterstützt wird. Das Profile sagt weiterhin auch aus wie gut die Qualität des resultierenden Bildmaterials sein wird.

    Meine Fragen dazu:
    Kann man anhand einer Angabe wie H.264 High Profile@Level4.1 sagen, wie weit ein Video mit einer Auflösung von 1080p30 herunterkomprimiert werden kann? Oder ist die Umsetzung immer noch von der vorhandenen Hardware abhängig wie gut der implementierte Codec wirklich arbeitet? Bisher konnte ich Angaben in Datenblättern zu der genannten Konstellation finden, die eine Datenrate von 2MBit/s - etwa 15MBit/s aufwiesen. Können mit einem Main Profile@Level4.1 ähnliche Kompressionsraten erreicht werden, bei entsprechenden Qualitätseinbußen?

    Ich hoffe ich habe das soweit verständlich rüber bringen können :)
    Vielen Dank für eure Hilfe im Voraus.

    Gruß
    Stell
     
  2. may24

    may24 Silber Member

    Registriert seit:
    15. Februar 2011
    Beiträge:
    710
    Zustimmungen:
    21
    Punkte für Erfolge:
    28
    kurze Antwort: Nein

    Lange Antwort: Die Angabe des Profils/Levels ist "nur" eine Empfehlung an den Decoder.
    Viele Decoder schauen in den Header des Video Streams und entscheiden dann anhand der Informationen ob sie den abspielen können oder nicht.

    Richtig: in den Profilen / Levels werden max. Datenraten, max FPS usw... definiert die der Decoder beherrschen muß -> link

    Doch die Levels/Profile sagen nichts über die Qualität eines Streams aus !
    Hoch bzw. runterskaliert kann Alles nach Alles werden.
    Gewisse Features verlangen zwar höhere Levels aber das hat eigentlich nur auswirkungen auf die Endgröße der Datei und weniger auf die Qualität

    Wie gut die Codecs arbeiten hat nichts mit der Hardware zu tun sonder alleine von der Implementierung und Configuration des Encoders.
    Die Hardware entscheidet nur wie "lange" das en- bzw. decoden braucht.
    Oder anders gesagt: Ich kann auch 4K mit maximaler Komplexität auf 'nem Pentium I rendern ... dauert halt nur "ein wenig länger" :D :D

    Kurzum: wenn du ein Video erstellst und das in h.264 (MPEG-4 AVC) encodest, dann errechen sich die Profile/Levels (meist) automatisch aus der Fläche des Videos, FPS und verwendeter Features.
     
    Zuletzt bearbeitet: 24. November 2015
  3. simonsagt

    simonsagt Board Ikone

    Registriert seit:
    11. April 2014
    Beiträge:
    3.563
    Zustimmungen:
    1.410
    Punkte für Erfolge:
    163
    Wie gut der implementierte Codec arbeit, ist von der Implementierung in Zusammenarbeit mit der Hardware abhängig. Beim Abspielen jedenfalls. Aber da kann sein, dass dann sogar noch der Fernseher einen Filter über das Bild legt und wenn das nicht 100% native Auflösung ist, wird auch noch wo skaliert, usw.

    Beim Codieren ist das Ergebnis ein bisschen eindeutiger und von den Optionen und der Implementierung abhängig. Je nach verwendeten Optionen ist das Endergebnis einem der Level und Profile zuzuordnen. Da ist es dann eher interessant auf seinem mobilen mp4-Player nachzulesen, welches Level/Profil der unterstützt. Auf Geräten mit Software hast du das Problem normalerweise nicht.

    Wenn du für ein bestimmtes Ziel codieren willst, kann es sein, dass du Einschränkungen hinnehmen musst.

    Als ich noch umcodiert habe, habe ich gerne StaxRip verwendet. Die Auswahloptionen, wie der den Codec ansteuert, sind da recht übersichtlich. Am meisten bringt es, das Quellmaterial zu kennen. Wenn man z.B. Zeichentrick codiert, sind andere Optimierungen notwendig, als z.B. ein körniger Schwarzweißstreifen. Und wenn man sowas wie die HD Ausstrahlung von ARD umcodieren möchte, sollte man einen Filter drüber laufen lassen, der jedes zweite Frame wegwirft, falls die Quelle mal 24/25p war.
     
    Stell gefällt das.
  4. Stell

    Stell Neuling

    Registriert seit:
    24. November 2015
    Beiträge:
    2
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Danke euch beiden für die ausführlichen Antworten.

    Ich hätte wohl noch erwähnen sollen, dass es sich bei meiner Annahme um einen fortlaufenden Stream handelt und die Videodatei nicht schon komplett auf dem Rechner zur Verfügung steht. Dadurch sollte die Hardware auf jeden Fall als Voraussetzung in der Lage sein die ankommenden Daten schnell genug verarbeiten und ausgeben zu können. Daher der Bezug zur Hardware, in die der Codec implementiert ist.

    Mit Qualität meinte ich nicht die Auflösung, sondern das Ergebnis des Encodierens und Decodierens. Da das in der Regel nicht verlustfrei abläuft, kann die Bildqualität deutlich absinken, je nach dem welche Komponenten eines Codecs verwendet werden.
    Link dazu von Adobe: Encoding options for H.264 video | Adobe Developer Connection
    Bild 2 zeigt noch deutlich den Vergleich zwischen Main und Baseline Profile.

    Bisher konnte ich keine allgemein gültige Aussage bezüglich der Kompressionsrate und dem Codec finden. Die Level geben ja nur die maximale vom Codec unterstützte Bandbreite an.
    Die von mir erdachte Beziehung sollte in etwa so aussehen: 1080p30 ->High Profile @level 4.1 => 2Mbit/s
    1080p30 -> Main Profile @Level4.1 => 10Mbit/s
    1080p30 -> Base Line Profile @Level4.1 => 20Mbit/s
    Als Minimalwerte, die mit den jeweiligen Profiles erreicht werden können. So einfach ist das wohl doch nicht :)

    Gruß
    Stell
     
  5. TV_WW

    TV_WW Lexikon

    Registriert seit:
    10. Juli 2004
    Beiträge:
    20.231
    Zustimmungen:
    4.138
    Punkte für Erfolge:
    213
    Diese Angabe wirst du nirgendwo finden, da die Kompressionsrate von den jeweiligen Bildinhalten, dem verwendeten Encoder u. dessen Konfiguration abhängig ist u. bei Videocodecs kommt noch der subjektive Bildeindruck hinzu.
    H.264 arbeitet wie so viele Videocodecs nicht ohne Qualtätsverlust, die Bildqualität soll im Verhältnis der Datenrate relativ hoch sein, aber eine allgemeingültige Aussage ist schlicht nicht möglich.
     
  6. simonsagt

    simonsagt Board Ikone

    Registriert seit:
    11. April 2014
    Beiträge:
    3.563
    Zustimmungen:
    1.410
    Punkte für Erfolge:
    163
    Ein klares Nope.

    Ein klares Echtzeitcodierung ist wieder was anderes.

    h264 ist prinzipiell eine Ansammlung von Regeln, wie ein Stück Video komprimiert abgespeichert werden kann. Durch die Verlustbehaftete Komprimierung kann man sich allerdings die tollsten Dinge überlegen, wie und was man weglassen kann und an welche Rahmenbedingungen man sich halten möchte, alles unter der Voraussetzung, man erzeugt dann trotzdem noch einen gültigen h.264 Stream. Diese Profile geben eigentlich nur an, welche Features vom Codec beherrscht oder benutzt werden können/dürfen.

    Je mehr Rechenleistung man reinzustecken bereit ist, desto besser oder kleiner das Ergebnis. Allerdings erreicht man schnell einen Punkt, an dem eine kleine Steigerung an Qualität oder Komprimierung Unsummen an Rechenleistung verschlingt.

    Ich habe keine Ahnung, wie die Implementierung von Adobe sich ansteuern läßt. Die Implementierung x264 jedenfalls hat Qualitätsstufen, Presets mit Geschwindigkeit und Voreinstellungen für bestimmte Quellmaterialien. Eine hohe Qualität mit langsamer Codierung wird selbst bei niedrigerem Profil ein besseres Ergebnis bringen, als schlechte Qualtiät und schnelle Codierung mit hohem Profil. Und von Hand tunen kann man das ganze auch noch, aber im Zweifel lohnt sich das nicht.

    Du gehst eventuell von einer Codierung mit konstanter Bitrate aus. Das ist wohl möglich, aber suboptimal.

    Beim Codieren mit x264 sollte man eigentlich nur an drei Dingen schrauben. Qualitätsfaktor, Preset für Quellmaterial und Zeit für das Codieren. Gaaaaanz grob über den Daumen gepeilt bekommt man mit ähnlicher Qualität mpeg2 Quellmaterial halb so groß. Sowas wie 2D-Zeichentrick auch mal Faktor 5.

    Und für das Codieren in Echtzeit gibt es bestimmt irgendwo Tutorials, da kommt es ja dann auch erheblich auf die Puffergrößen an und was der Codec tun soll, wenn er nicht mehr hinterherkommt. Bei einer Videokonferenz kann man Frames auch mal auslassen, bei einer Kamera die den Zieleinlauf beim 100m Lauf streamt, wohl eher nicht.
     
    Stell gefällt das.