X264

x264

Basisdaten

Entwickler x264-Team
Aktuelle Version x264 r3107[1]
(23. April 2023)
Betriebssystem plattformunabhängig
Programmier­sprache ISO-C
Kategorie Videokompression
Lizenz GPL, proprietär (wahlweise)
videolan.org/developers/x264.html

x264 ist ein plattformübergreifender Encoder für das Video-Format H.264 (MPEG-4 AVC) und wird unter der GNU General Public License veröffentlicht.

Die x264-Kodierer-Bibliothek wird von Laurent Aimar, Loren Merritt, Fiona Glaser, Eric Petit, Min Chen, Justin Clay, Måns Rullgård, Radek Czyz, Christian Heine, Holger Lubitz, Alex Izvorski und Alex Wright entwickelt. Der Programmcode ist in ISO-C geschrieben.

Der x264-Kodierer wird u. a. als Kommandozeilenprogramm (CLI) zur Verfügung gestellt. Das Programm kann als Quelle unkomprimierte Rohdaten (YCbCr-Farbmodell 4:2:0-Format), AviSynth-Skripte sowie alle von FFmpeg lesbaren Formate verarbeiten.[2]

Alternativ dazu gibt es verschiedene grafische Benutzeroberflächen, die die Bedienung des CLI-Kodierers vereinfachen. Die populärsten sind StaxRip, MeGUI, Gordian Knot, HandBrake und x264gtk. Auch der plattformunabhängige Video-Editor Avidemux bietet die Möglichkeit, Videos mit x264 zu enkodieren. Darüber hinaus ist ein Wrapper für die Video-for-Windows-Schnittstelle (VfW) verfügbar, der die Verwendung von x264 in VirtualDub ermöglicht. Allerdings unterliegt das VfW-Interface von x264 einigen Einschränkungen und wird von den Entwicklern nicht empfohlen. Um dieser Empfehlung Nachdruck zu verleihen, wurde die VfW-Version mittlerweile eingestellt. Mit DTS x264 VfW existiert eine inoffizielle Version, die die Kompatibilität mit dem AVI-Format wieder herstellt, die Dekodierung von Videos unterstützt und wie gewohnt verwendet werden kann.[3] Eine weitere Möglichkeit, den x264-Kodierer über ein Kommandozeilen-Interface zu verwenden, ist mit MEncoder oder FFmpeg gegeben.

Technische Details

[Bearbeiten | Quelltext bearbeiten]

Als H.264-Kodierer arbeitet x264 deutlich effizienter als Kodierer, die auf dem einfacheren MPEG-4 ASP basieren (etwa der DivX-Codec bis v6), oder solche Kodierer, die das noch ältere MPEG-2-Verfahren verwenden. Das bedeutet, dass x264 im Vergleich zu früheren Codecs bei gegebener Datenrate eine bessere Bildqualität liefert bzw. bei gegebener Qualität eine stärkere Kompression erreicht. x264 unterstützt auch die anspruchsvolleren Profile wie etwa das High Profile und Hi10p des H.264-Standards (Details im entsprechenden Artikel). Außerdem ist x264 in der Lage, gewisse Berechnungen parallel auszuführen, sodass symmetrische Multiprozessorsysteme optimal ausgenutzt werden können. Allerdings wurden einige Funktionen des H.264-Standards im x264-Codec (noch) nicht implementiert, so etwa die Fehlerkorrektur des Baseline Profile. Beachtet werden sollte auch, dass x264 – wie jeder H.264-Codec – deutlich rechenintensiver ist als die einfacheren MPEG-4 ASP-basierten Codecs. Somit erfordert die Encodierung mehr Zeit und für die Wiedergabe werden höhere Anforderungen an das System gestellt. Die Wiedergabe mit Prozessoren unter 800 MHz kann daher Probleme bereiten, insbesondere wenn diese nicht über den SSE-Befehlssatz verfügen. Seit r1480 ist es mit dem x264-Encoder möglich, der Blu-ray-Disc-Spezifikation entsprechende Bitströme zu generieren und ihn somit bei der Erstellung von Blu-ray-Discs einzusetzen.

Unterstützte H.264-Merkmale

[Bearbeiten | Quelltext bearbeiten]
  • CAVLC/CABAC
  • Multiple Referenzen
  • Intra-Frames: Alle Makroblock-Typen (16×16, 8×8 (High Profile), und 4×4 mit allen Prognosen)
  • Innerhalb von P-Bildern: Alle Partitionsgrößen (von 16×16 bis 4×4)
  • Innerhalb von B-Bildern: Partitionen von 16×16 bis 8×8 (inklusive überspringen/direkt)
  • B-Frames als Referenz / beliebige Frame-Reihenfolge
  • 8×8 und 4×4 adaptive räumliche Transformierung (High Profile)
  • Verlustfreie Kompression (optional)
  • Benutzerdefinierte Quantisierungs-Matrizen (High Profile)
  • Optimiert für mehrere Prozessoren bzw. Mehrkernprozessoren
  • Gemischte Referenz-Frames für Sub-Makroblöcke
  • Integrierter Deblocking-Filter
  • Zeilensprungverfahren (MBAFF)
  • 8-, 9- und 10 bit Sampling-Tiefe
  • Unterstützung für 4:2:0, 4:2:2 und 4:4:4 Chroma Subsampling

Zusätzliche Merkmale

[Bearbeiten | Quelltext bearbeiten]
  • Frame-basiertes Multithreading, skaliert auf mindestens 16 CPU-Kerne[4]
  • Verschiedene Modi zur Steuerung der Datenrate: Konstante Quantisierung, konstante Datenrate, mittlere Datenrate mit einem oder mehreren Durchläufen
  • Bitratensteuerung im Makroblock-Baum-Verfahren[5]
  • Lookahead VBV (Video Buffering Verifier)[6]
  • Psychovisuell optimierte Abstimmung der Bitrate auf die Bildqualität („Psy RDO“) und Trellis-Quantisierung („Psy Trellis“)[7]
  • Variance AQ (Adaptive Quantisierung)[8] und AutoVAQ[9]
  • Optimale adaptive B-Frame Steuerung[10]
  • Unterstützung mehrerer Slices („Multi-slice“), wird für BluRay Kompatibilität benötigt[11]
  • Lookahead-Funktion in einem separaten Thread („Threaded lookahead“)[12]
  • Weighted P-Frame Prediction (entwickelt im Rahmen von GSoC 2009)[13]
  • Bitrate/Qualität-Optimierung
  • Szenen-Wechsel-Erkennung
  • Verschiedene Bewegungserkennungs-Modi (u. a. Diamond, Hexagon, Multi-Hexagon sowie erschöpfende Suche)
  • DCT – Domain Rauschfilter
  • RD-Optimierte Quantisierung („Trellis“)

Projekte mit x264

[Bearbeiten | Quelltext bearbeiten]

Freie und Open-Source-Software

[Bearbeiten | Quelltext bearbeiten]

x264 ist eine freie Open-Source-Software (FOSS). Dies bedeutet unter anderem, dass der Quelltext frei verfügbar ist und man somit das Programm selbst kompilieren kann. Dabei ist es möglich, das Programm an den eigenen Hauptprozessor und das Betriebssystem anzupassen. Auf der x264-Homepage findet man keine offiziellen Builds, sondern nur die jeweils aktuelle Fassung des Quellcodes. Allerdings sind diverse inoffizielle Builds verfügbar, so dass auch Anwender ohne spezielle Kenntnisse den x264-Codec einfach installieren und nutzen können. Fertige Builds gibt es zum Beispiel für Windows (32-Bit, 64-Bit), Linux oder macOS. Die gebräuchlichsten x264-Builds für Windows dürften momentan wohl die von Sharktooth (Doom9.net-Forum) und Bob0r (www.x264.nl) sein. Dort sind fast täglich Updates verfügbar.

Am 14. Juli 2010 hat Jason Garrett-Glaser, der derzeitige Projektleiter, bekannt gegeben, dass x264 ab sofort auch mit einer kommerziellen Lizenz erworben werden kann, damit Lizenznehmer die Software auch vertreiben können, ohne (selbst) den Quellcode anbieten zu müssen.[14] Die günstigste Lizenzgebühr soll $10.000 für 10.000 Encoder-Einheiten betragen.[15] Der erste Lizenznehmer ist Pegasys TMPGEnc.[16]

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. artifacts.videolan.org.
  2. FFMS2/libav*-Patch (x264-git (Memento vom 21. September 2011 im Internet Archive))
  3. Codecs.com: DTS x264 VfW (Memento vom 1. März 2008 im Internet Archive)
  4. Historical notes: (Memento vom 4. März 2016 im Internet Archive)
  5. http://forum.doom9.org/showthread.php?t=148686
  6. http://forum.doom9.org/showthread.php?t=148964
  7. http://forum.doom9.org/showthread.php?t=138293
  8. http://forum.doom9.org/showthread.php?t=132760
  9. http://forum.doom9.org/showthread.php?t=147067
  10. http://forum.doom9.org/showthread.php?t=139827
  11. Multi-slice encoding support (Memento vom 1. November 2011 im Internet Archive)
  12. Threaded lookahead (Memento vom 1. November 2011 im Internet Archive)
  13. Weighted P-frame prediction (Memento vom 1. November 2011 im Internet Archive)
  14. Volker Zota: Kommerzielle Lizenzen für H.264-Encoder x264. In: heise.de. 14. Juli 2010, abgerufen am 3. Februar 2024.
  15. http://mailman.videolan.org/pipermail/x264-devel/2010-July/007508.html
  16. Diary Of An x264 Developer (Memento vom 30. November 2010 im Internet Archive)