H.264/MPEG-4 AVC ist ein H.-Standard zur Videokompression. Nachfolger sind H.265, VP9, AV1 und Daala. Er wurde zunächst von der ITU (Study Group 16, Video Coding Experts Group) unter dem Namen H.26L entwickelt. Im Jahr 2001 schloss sich die ITU-Gruppe mit MPEG-Visual zusammen und führte die Entwicklung gemeinschaftlich im Joint Video Team (JVT) fort. Ziel des Projektes war es, ein Kompressionsverfahren zu entwerfen, das im Vergleich zu damaligen Standards sowohl für mobile Anwendungen als auch im TV- und HD-Bereich die benötigte Datenrate bei gleicher Qualität mindestens um die Hälfte reduziert. Mitglieder der Arbeitsgruppe stammen unter anderem vom Fraunhofer-Institut für Nachrichtentechnik, Microsoft und Cisco Systems. Im Jahr 2003 wurde der Standard von beiden Organisationen mit identischem Wortlaut verabschiedet. Die ITU-Bezeichnung lautet dabei H.264. Bei ISO/IEC MPEG läuft der Standard unter der Bezeichnung MPEG-4/AVC (Advanced Video Coding) und ist der zehnte Teil des MPEG-4-Standards (MPEG-4/Part 10, ISO/IEC 14496-10). Der Standard sollte nicht mit dem MPEG-4/ASP-Standard verwechselt werden (MPEG-4/Part 2, ISO/IEC 14496-2).
H.264 erreicht typischerweise eine etwa dreimal so hohe Codiereffizienz wie H.262 (MPEG-2) und ist wie auch H.262HDTV wurde mit MPEG-2 eingeführt (1920x1080 @30), der Sender Euro1080 sendete bis 6. Januar 2007 in MPEG-2. Das erste HDTV war übrigens analog und erfolgreich (Japan, MUSE, Regelbetrieb 1991–2007 mit sichtbar 1035/gesamt 1125 Zeilen) für hoch aufgelöste Bilddaten (z. B. HDTV) ausgelegt. Das heißt, vergleichbare Qualität ist bei etwa einem Drittel der MPEG-2-Datenmenge zu erreichen. Allerdings ist der Rechenaufwand auch um den Faktor 2 bis 3 höher.
Die für den Standard benutzten FourCCs sind „AVC1“, „DAVC“, „H264“, „x264“ und „VSSH“. Die Matroska-Codec-ID lautet „V_MPEG4/ISO/AVC“.
Das standardisierte Dateiformat/Containerformat ist MP4.
Einsatzgebiete H.264 wurde nicht auf einen spezifischen Verwendungszweck zugeschnitten, sondern entfaltet seine Leistung in einem recht breiten Spektrum an Anwendungen. Daher sind die momentan aussichtsreichsten Einsatzgebiete auch von sehr verschiedener Gestalt:
HDTV H.264 ist eines der obligatorischen Videokompressionsverfahren des Blu-ray-Standards und für die hochauflösende Fernsehübertragung mittels DVB-S2 (z. B. HD-1 und Sky HD, sowie ProSieben HD bzw. RTL HD) verpflichtend. Auch der 2008 eingestellte HD-DVD-Standard sah Videokompression gemäß dem H.264-Verfahren vor. Portable Video Die konkurrierenden Mobilfernsehstandards DVB-H und DMB verwenden beide (unter anderem) H.264 für die Videokodierung für mobile Endgeräte, wie Mobiltelefone oder PDAs. Auch die PlayStation Portable, die fünfte Generation des Apple iPods, das iPhone und der nur in den USA erhältliche Zune-Player können H.264-Videos abspielen. Multimedia Apple liefert sein Multimedia-Framework QuickTime ab Version 7 mit einem H.264-Codec aus. Videokonferenztechnik Seit 2005 stehen Anwendern Videokonferenzendsysteme mit H.264-Codecs zur Verfügung. So sind beispielsweise in iChat AV 3.x erstmals Mehrfach-Videokonferenzen möglich. Video-/Digicams Eine Reihe von Digitalkameras und Videokameras unterstützen H.264-Kompression für Videoaufzeichnung.
Verwandte Verfahren Während der Spezifizierung von H.264 spalteten sich mehrere kommerzielle Entwicklungspfade ab, die zwar mehr oder weniger direkt auf H.264 aufsetzen, jedoch letztlich eine teilweise inkompatible Einheit darstellen:
Sorenson Video 3, ein im Umfeld von QuickTime und im Kontext des *.mov-Dateiformat sehr verbreiteter Codec, der nur in Details von H.264 abweicht. Microsoft Windows Media Video 9 (*.wmv, FourCC: WMV9/wvc1) ist ein Videocodec der Firma Microsoft, welcher auch LoopFiltering einsetzt. Die Variante VC-1 (FourCC: wvc1) (vormals VC-9 nach WMV9) ist ebenfalls einer der Codecs, die in HD DVD und Blu-ray Disc Verwendung finden. VP8, ist ein von der Google-Firma On2 Technologies entwickelter Videocodec. Er baut auf der Entwicklungsreihe TrueMotion auf.
Weiterentwicklungen Multiview Video Coding (MVC) für stereoskopische Aufnahmen. High Efficiency Video Coding (HEVC oder H.265), Nachfolger von H.264 VP9, ist ein von Google entwickelter Videocodec. Er baut auf VP8 auf und ist im Browser Chrome implementiert. AV1, ist ein von der Alliance for Open Media entwickelter Videocodec. Er baut auf VP9 auf.
Technische Details H.264 baut weitestgehend auf seinen Vorgängern MPEG-1, MPEG-2, MPEG-4 und der H.261-Familie auf, weist jedoch deutliche Veränderungen und Erweiterungen auf (siehe auchStrutz: Bilddatenkompression. SpringerVieweg, 2009):
Anstelle einer Diskreten Kosinustransformation (DCT) mit 8×8 Pixel großen Blöcken wird eine Integertransformation auf 4×4 Pixel (im High-Profile zusätzlich wählbar bis 8×8 Pixel) großen Blöcken verwendet. Die Entropiekodierung wurde an die veränderte Transformation angepasst. H.264 unterstützt dabei neben den herkömmlichen Huffman-artigen VLC-Codes (CAVLC, Context Adaptive Variable Length Coding) auch eine leistungsfähigere arithmetische Kodierung (Context-Adaptive Binary Arithmetic Coding (CABAC)). Macroblock Partitioning: Die Makroblöcke von der Größe 16 × 16 Pixel können in Unterblöcke bis hinunter zu einer Größe von 4 × 4 Pixeln unterteilt werden. Da für jeden Block ein eigener Bewegungsvektor gespeichert wird, können somit räumlich scharf abgegrenzte und vor allem komplexe Bewegungen besser kodiert werden. Die Bewegungskompensation ist immer auf ¼ Pixel genau (bei H.263, d. h. MPEG-4/ASP, war dies eine Option). Die Bewegungskompensation für halbe Pixel wird nicht mehr mit einem Filter mit zwei Koeffizienten (Mittelwertbildung: +1/2, +1/2), sondern mit einem komplexeren Filter mit sechs Koeffizienten (+1/32, -5/32, +20/32, +20/32, -5/32, +1/32) durchgeführt. Viertelpixel werden aus den Halbpixeldaten durch eine weitere Mittelwertbildung berechnet. Intra Prediction: Auch innerhalb von I-Frames kommt eine Form der Bildvorhersage (prediction) zum Einsatz. Dabei werden die Pixelwerte eines Blocks aus den umliegenden, bereits dekodierten Pixeln abgeschätzt und dann lediglich die Differenz zum tatsächlichen Bildinhalt kodiert. Bei kleineren Bildformaten ist diese Methode im Allgemeinen effizienter als JPEG 2000. Long-Term Prediction: P- und B-Frames können nicht nur Referenzen auf den jeweils letzten I- oder P-Frame enthalten, sondern auch zu maximal 16 vorhergehenden, theoretisch beliebig weit zurückliegenden, beliebigen Frames, um eine effizientere Kodierung von periodischen Bewegungen zu ermöglichen. Weighted Prediction: Werden Bildinhalte aus mehreren Referenz-Frames gemischt, können die Quellen beliebig gewichtet in die Mischung eingehen. So lassen sich Aus- und Überblendungen sehr effizient kodieren. Deblocking-Filter: Während sich die bisherigen MPEG-Codecs ausschließlich auf eine optionale, externe Nachbearbeitung/Filterung (englisch postprocessing) verlassen, ist ein Deblocking-Filter integraler Bestandteil von H.264 (wie auch schon bei H.263 im Anhang J). Referenzen auf bereits dekodierte Frames beziehen sich ebenfalls auf die bereits gefilterten Bilder. Damit erreicht man eine sehr hohe wahrgenommene Bildqualität. Besonders im Zusammenwirken mit der verkleinerten Transformationsgröße von 4 × 4 ergeben sich große subjektive (und in geringerem Maße auch objektive) Verbesserungen. Switching Slices: ermöglichen den nahtlosen Übergang zwischen verschiedenen Videoströmen, ohne dabei „teure“ (weil große) I-Frames einsetzen zu müssen. Flexible Macroblock Ordering: Die Makroblöcke innerhalb eines Frames bzw. Slices können in relativ freier Reihenfolge angegeben werden. Dies lässt sich z. B. zur Fehlerverdeckung bei Kanalverlusten (Mobil-Video) einsetzen. FMO wird allerdings von den meisten Encodern und Decodern nicht unterstützt, es ist auch kein Teil der Profile Main und High.
Profile Profile und Level sollen die Zusammenarbeit der verschiedenen Implementierungen der Hersteller unterstützen. Die Profile fassen bestimmte Merkmale zusammen, die unterstützt werden müssen. Ein Level setzt Beschränkungen auf die Variablen eines Datenstroms, wie etwa die maximale Auflösung oder Bitrate.
BaselineExtendedMainHighHigh 10High 4:2:2High 4:4:4 I and P Slices B Slices SI and SP Slices Multiple Reference Frames In-Loop Deblocking Filter CAVLC Entropy Coding CABAC Entropy Coding Flexible Macroblock Ordering (FMO) Arbitrary Slice Ordering (ASO) Redundant Slices (RS) Data Partitioning Interlaced Coding (PicAFF, MBAFF) 4:2:0 Chroma Format 4:2:2 Chroma Format 4:4:4 Chroma Format 8 Bit Sample Depth 9 and 10 Bit Sample Depth 11 and 12 Bit Sample Depth 8x8 vs. 4x4 Transform Adaptivity Quantization Scaling Matrices Separate Cb and Cr QP control Monochrome Video Format Residual Color Transform Predictive Lossless Coding
Level
H.264 definiert wie schon in MPEG-2 verschiedene Level. Diese sind umso höher, je größer die Bitrate des Videos ist.
In der folgenden Tabelle sind die zulässigen Grenzwerte der einzelnen Profile angegeben:ITU-T publication page: H.264: Advanced video coding for generic audiovisual services ITU-T, Jan 2012.
Macroblocks proBeispiele fürVideobitrate (VCL) für ProfilesLevelFrameSekundeAuflösung/Bildratedieses LevelsBaselineExtendedMainHighHigh 10High 4:2:2High 4:4:4 1 99 1 485 128 × 96 / 30176 × 144 / 15 64 kbit/s 80 kbit/s 192 kbit/s 256 kbit/s 1b 128 kbit/s 160 kbit/s 384 kbit/s 512 kbit/s 1.1 396 3 000 176 × 144 / 30320 × 240 / 10352 × 288 / 7.5 192 kbit/s 240 kbit/s 576 kbit/s 768 kbit/s 1.2 6 000 176 × 144 / 60320 × 240 / 20352 × 288 / 15 384 kbit/s 480 kbit/s 1152 kbit/s 1536 kbit/s 1.3 11 880 320 × 240 / 40352 × 288 / 30 768 kbit/s 960 kbit/s 2304 kbit/s 3072 kbit/s 2 2 Mbit/s 2,5 Mbit/s 6 Mbit/s 8 Mbit/s 2.1 792 19 800 352 × 288 / 50352 × 576 / 25 4 Mbit/s 5 Mbit/s 12 Mbit/s 16 Mbit/s 2.2 1 620 20 250 352 × 288 / 50720 × 480 / 15 3 40 500 720 × 480 / 30720 × 576 / 25 10 Mbit/s 12,5 Mbit/s 30 Mbit/s 40 Mbit/s 3.1 3 600 108 000 720 × 576 / 601280 × 720 / 30 14 Mbit/s 17,5 Mbit/s 42 Mbit/s 56 Mbit/s 3.2 5 120 216 000 1280 × 720 / 601280 × 1024 / 42,2 20 Mbit/s 25 Mbit/s 60 Mbit/s 80 Mbit/s 4 8 192 245 760 1280 × 720 / 68,31280 × 1024 / 481920 × 1080 / 30 4.1 50 Mbit/s 62,5 Mbit/s 150 Mbit/s 200 Mbit/s 4.2 8 704 522 240 1280 × 720 / 1451920 × 1080 / 642048 × 1080 / 60 5 22 080 589 824 1920 × 1080 / 72,32048 × 1080 / 67,83672 × 1536 / 26,7 135 Mbit/s 168,75 Mbit/s 405 Mbit/s 540 Mbit/s 5.1 36 864 983 040 2048 × 1080 / 112,93840 × 2160 / 31,74096 × 2160 / 28,5 240 Mbit/s 300 Mbit/s 720 Mbit/s 960 Mbit/s 5.2 36 864 2 073 600 2048 × 1080 / 1723840 × 2160 / 66,84096 × 2160 / 60
Implementierungen AVCHD Multimediastandard für hochauflösende, digitale Consumer- und Prosumer-Videokameras. AVC-Intra Implementierung von Panasonic für professionelle Videoproduktionen JM-Referenzsoftware des Joint-Video-TeamH.264/AVC JM Reference Software – Seite beim HHI; Stand: 22. April 2010 x264 ist ein unter der GPL lizenzierter H.264-Kodierer. Die freie, LGPL-lizenzierte Bibliothek libavcodec beinhaltet einen H.264-Decoder und Encoder. Apple hat H.264 in macOS ab Version 10.4 (Tiger), und in QuickTime Version 7 integriert. Nero Digital, beinhaltet einen von der Nero AG und Ateme entwickelten H.264-Kodierer. Sorenson bietet eine Implementierung von H.264 an. Main Concept bietet einen H.264-Kodierer als Software, OpenCL und CUDA-Encoder an. Elecard H.264 Lead Technologies hat einen H.264-Videocodec. CoreAVC ist ein Software-H.264-Decoder Pixeltools Expert-H264 Adobe Flash Player 9+ DivX H.264 Intel Ivy Bridge QuickSync (GPU encoder) DiscretePhoton nanocosmos bietet H.264 – Codecs für Windows und MacOS an Citrix nutzt das Kompressionsverfahren für sein HDX-Protokoll (ehemals ICA) in den Produkten XenApp 6.5 und XenDesktop 7 zur Übertragung von bewegten Bildern.
Tests