Allgemeines
H.264/AVC ist ein Videokompressionsstandard, der aus einer Zusammenarbeit zwischen ITU (International Telecomunication Union) und MPEG (Motion Picture Expert Group), den beiden wichtigsten Standardisierungsorganen im Bereich Video, hervorgegangen ist.Die Werkzeuge die durch den Standard definiert sind, erlauben eine deutlich effizientere Kompression von Videodaten. Gleichzeitig ist er durch definierte Profile (Einschränkungen in den Verwendeten Kodierungsmethoden) und Level (Einschränkungen in den Spezifikationen des Videomaterials) sehr flexibel und bietet somit Anwendungen von kleinsten und rechenschwachen Geräten (wie z.B. Sonys PSP) bis hin zu professioneller Studioausrüstung.

  • Baseline Profile unterstützt I/P-Frames, kein Interlaced Encoding und nur CAVLC
  • Extended Profile unterstützt I/P/B/SP/SI-Frames, kein Interlaced Encoding und nur CAVLC
  • Main Profile unterstützt I/P/B-Frames, progressives und interlaced Encoding, CAVLC und CABAC – High Profile zusätzlich zum Main Profile: 8×8 intra prediction, custom quants, verlustfreie Kompression, zusätzliche Farbräume (4:4:4…)

AVC ist einer der erlaubten Videoformate bei den DVD Nachfolgern Blu-Ray und HD-DVD.

Technik
Zu den wichtigsten und modernsten Werkzeugen von H.264 gehören:

  • Integertransformation: Die bisherigen MPEG-Standards beruhten auf der DCT(Info), H.264/AVC dagegen arbeitet mit einer ganzzahligen Transformation der Größe 4×4 (im Main Profil 8×8), die sehr effizient implementiert werden kann und auf einer vielzahl von Rechnerarchitekturen genau spezifiziert werden kann (englisch). Das erlaubt z.B. eine verbesserte Vorhersage von Bildteilen, da sich keine architekturbedingten Rundungsfehler aufschaukeln.
  • Intra Prediction: In den bisherigen MPEG-Standards wurden Bildteile aus vorhergehenden oder darauffolgenden Frames vorhergesagt, und nur die Differenz abgespeichert. In H.264/AVC ist auch die Vorhersage innerhalb eines Frames möglich. englisch
  • CABAC/CAVLC: Als Entropieencoder (Das Äquivalent zu Zip bei normalen Dateien) sind in H.264/AVC zwei adaptive Verfahren verfügbar. CAVLC (Context Adaptive Variable Length Coding) speichert bestimmte Daten (z.B. Bewegungsvektoren, Bildinformationen, …) abhängig von der Art der Daten und Häufigkeitsverteilung ihrer Werte mit verschieden langen Bitfolgen ab. CABAC geht sogar noch einen Schritt weiter und verwendet anstatt verschieden langer ganzzahliger Bitfolgen eine arithmethische Codierung, die auch Bruchteile von Bits erlaubt. Diese beiden Methoden sind deutlich effektiver als die bisher verwendeten Verfahren wie Huffman Codierung. englisch
  • Inter Prediction: In bisherigen MPEG-Standards konnte ein Bild aus höchstens zwei Refernzbildern vorhergesagt werden. In H.264/AVC können mehrere verschiedene Bilder, auch sehr viel früher gelegene und B-Frames, als Referenzbilder dienen. Jeder 16×16 Makroblock kann in kleinere Teile zerlegt werden (16×8, 8×16, 8×8, 8×4,4×8,4×4) die dann jeweils verschiedene Bewegungsvektoren haben.

Diese Werkzeuge brauchen z.T. sehr viel Rechenleistung, erlauben aber eine sehr viel bessere Bildqualität vor allem bei niedrigen Bitraten.

Für tiefergehende technische Informationen: VCodex
Eine Vorabversion des Standards: Draft Standard

Anwendung
Die zwei wichtigsten Encoder Implementierungen des Standards sind x264 und Nero Digital.

Nero Digital ist ein Paket verschiedener Audio und Video Codecs, die MPEG4 kompatibel sind. Der H.264/AVC Codec wird von Nero und Ateme entwickelt. Dieser Codec ist kostenpflichtig.( NeroDigital ) . Er kann nur mit dem Programm Nero Recode verwendet werden.

x264 ist ein Open Source Projekt, das von Videolan gehostet wird (englisch)( Videolan ). Der Codec ist frei verfügbar und kostenlos. Es gibt eine VFW Variante zur Verwendung mit z.B. VirtualDub, und eine Kommandozeilenapplikation, die Zugriff auf alle Optionen bietet und direkt MP4 und MKV Dateien schreiben kann.

Aktuelle Windowsbuilds davon gibt es von bob0r (http://x264.nl/) und Sharktooth “CMD+VFW” “CMD+VFW+MeGUI x264”

Eine detaillierte Beschreibung der Optionen in x264 ist Selurs “Wissenswertes rund um x264” PDF oder HTML

Achtung: x264 ist unter ständiger heftiger Weiterentwicklung. Es könnten schwere Fehler vorhanden sein oder die Kompatibilität verletzt sein. Jedoch sind die meisten Versionen stabil und fehlerarm.

Eine komfortable GUI mit Audio Encoding, Bitratenberechnung und Batchverarbeitung ist z.B. MeGUI

Die wichtigsten Decoder Implementierungen sind ffmpeg, CoreAVC, Quicktime, NeroDigital, MoonLight und VSS.

ffmpegs libavcodec wird z.B. im sehr universellen und nützlichen ffdshow Decoding Filter verwendet. Download des aktuellen Builds bei bob0r http://x264.nl/ oder Sharktooth

CoreAVC ist sehr stark optimiert und erlaubt das Abspielen von H.264 auch mit vergleichsweise schwächeren Rechnern. Als Plugin für TCMP ist CoreAVC sogar noch schneller. Infos

Einen Vergleich zwischen verschiedenen Decodern findet man hier (englisch)

Eine deutlich umfangreichere Liste an Encodern und Decodern findet man hier (englisch)