Audio Video Interleave

Aus Mikiwiki
Version vom 25. Januar 2009, 13:04 Uhr von Michi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Das Dateiformat <b>Audio Video Interleave / AVI</b> ist ein Videoformat (Containerformat). In einer AVI-Datei können mehrere Video-, Audio- und Text-Untert...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Das Dateiformat Audio Video Interleave / AVI ist ein Videoformat (Containerformat). In einer AVI-Datei können mehrere Video-, Audio- und Text-Untertiteldatenströme vorhanden sein, die mit verschiedenen Verfahren kodiert sein können. In einer AVI-Datei werden Audio- und Videodaten ineinander verzahnt ("interleaved") abgespeichert.

Die erste Definition von AVI wurde von der Firma Microsoft vom Resource Interchange File Format / RIFF abgeleitet und wurde als einheitliche Lösung für die Wiedergabe von kurzen Videodateien geschaffen. Die meisten AVI-Dateien nutzen die 1996 von der Matrox-Opendml-Gruppe vorgestellten Erweiterungen. Diese Dateien werden von Microsoft in begrenztem Umfang unterstützt und sind inoffiziell als AVI 2.0 bekannt. Das AVI-Format ist heute eines der unter Microsoft Windows meistverwendeten Videoformate und wird vor allem für Divx- und Divx 4-Videos verwendet

Typ Container
Codecs MJPEG, MPEG-4, DV, Windows uncompressed, Cinepak, Indeo, Microsoft Video usw.
Editierbarkeit unterschiedlich, je nach Codec
Streaming nicht möglich
Videostream 1
Audiostreams 0 bis 99
Dateigrösse Standard-AVI-Dateien (AVI 1.0) dürfen bis 4 GB gross sein. AVI 2.0-Dateien können die vom Dateisystem erlaubte Grösse erreichen. AVI 2.0 (auch: Opendml AVI, OpdenDML AVI) kann mehrere AVI 1.0-Dateien in einer Datei speichern. Microsoft rät von der Verwendung von Opendml stark ab und empfiehlt stattdessen seine eigenen Formate ASF und WMV.

Spezifikation

Videocodec Divx oder Xvid
Audiocodec MP3
Video Bitrate 500 - 2'000 (sinnvoll: 700 - 1'200)
Audio Bitrate 64 - 224 (sinnvoll: 96 - 128)
Samplerate 44'100 oder 48'000 (sinnvoll: 48'000)
Framerate beliebig (sinnvoll: 25)
Auflösung beliebig (sinnvoll: 576 x 432 oder 640 x 480)

AVI ist ein sehr offenes Format und beschreibt eigentlich nur, dass es sich bei einer Datei grundsätzlich um eine Videodatei handelt. Der Inhalt kann sowohl aus Video- und Audiodaten, aber auch nur aus Video- oder nur aus Audiodaten. Eine AVI-Datei kann aber auch nur einen Verweis auf die eigentlichen Videodaten beinhalten (z. B. bei DPS-Videosystemen) - in diesem Fall liegen die meist sehr umfangreichen Videodaten auf einem eigenen sehr schnellen Festplattensystem und die Projektdateien auf den gewöhnlichen Systemfestplatten.

AVI-Dateien können komprimierte oder unkomprimierte Videodaten enthalten. Eine AVI-Datei ist nur ein Container, der Audio- und Videodaten verschiedenster Codecs aufnimmt. Die Effizienz und die Filmqualität hängen vom verwendeten Codec ab (meist MPEG, Divx oder WMV). Der Four-CC-Code (Four Character Code) im Header einer AVI-Datei gibt an, in welchem Format und mit welchem Codec die Videodaten gespeichert sind; für Audiodaten kommen TwoCCs (Two Character Code) zum Einsatz. Neben den vielen Standardcodecs gibt es auch zahlreiche Softwareanbieter, die zusätzliche Codecs für spezielle Anwendungen anbieten. Auf Microsoft Windows-Systemen werden DV-Dateien im AVI-Format gespeichert.

Eine AVI-Datei kann ein MPEG-1-Video enthalten, muss aber nicht.

Es gibt einen Hack, der es AVI-Dateien erlaubt, Ogg Vorbis Audio-Streams zu enthalten, sie aber auch inkompatibel zu Standard-AVI-Dateien macht. Mplayer unterstützt die Wiedergabe solcher Dateien. Eine Spulfunktion ist auch implementiert, jedoch wird diese stark von schlecht umgewandelten Dateien mit verwirrenden Headers gestört. Leider schreibt der einzige Encodierer, der fähig ist, solche Dateien zu erzeugen (NanDub), solch problematischen Header.

Hinweis: DV-Kameras können Raw-DV-Streams erzeugen, welche von DV-Aufnahmetools in zwei unterschiedliche Typen von AVI-Dateien konvertiert werden. Die AVI-Datei enthält dabei entweder separate Audio- und Video-Streams, die MPlayer wiedergeben kann, oder den unveränderten DV-Stream. An dessen Unterstützung wird gerade gearbeitet.

Für die Aufzeichnung in einer AVI-Datei gibt es standardkonform zwei Methoden:

  • AVI-Typ 1 (Interleaved): Die AVI-Datei enthält die Audio- und Videodaten als einen einzigen Strom mit paketweise ineinandergeschachtelten Audio- und Videodaten. Dies ist die empfohlene und meistverwendete Form. Dieses Format kann nur mit Directshow abgespielt werden. Leider erzeugen einige Werkzeuge solche AVI-Dateien mit schlechter Synchronisation. Mplayer erkennt diese als interleaved, was zum Verlust von A/V-Sync führen kann (möglicherweise erst beim Vor-/Zurückspulen). Solche Dateien sollten non-interleaved (mit der "-ni"-Option) abgespielt werden.
  • AVI-Typ 2 (Non-Interleaved): Die Audio- und Videodaten sind getrennt. Als erstes kommt der ganze Videostream, danach der ganze Audiostream. Diese Art der Speicherung erfordert viel Suchen in der Datei, was die Wiedergabe vom Rechnernetz oder von CD-ROM schwierig macht. Im Unterschied zu AVI-Typ 1 werden die Audiodaten (wie im ursprünglichen Video) sowohl als Bestandteil des Videostroms, als auch aus Kompatibilitätsgründen in einem eigenen Audiostrom gespeichert. Dadurch sind AVI-Typ 2-Dateien etwas grösser: Durch die doppelt vorhandenen Audiodaten kommen zu den 3.7 MBit/s des Datenstroms noch zusätzlich 192 KBit/s hinzu. Darüber hinaus erfordert AVI-Typ 2 etwas mehr Rechenaufwand als Typ 1.

Mplayer unterstützt zwei Arten des timings für AVI-Dateien:

  • Die bps-basierte Methode fusst auf der Bitrate/Samplerate des Video-/Audio-Streams und wird von den meisten Playern verwendet (u. a. avifile und Windows Media Player). Dateien mit defekten Headern und Dateien, die mit VBR-Audio aber nicht VBR-unterstützendem Encoder erstellt wurden, führen bei dieser Methode zu A/V-Desync (meistens beim Spulen).
  • Die interleaving-basierte Methode benutzt nicht mehr den Wert der Bitrate sondern die relative Position des Audio-Paketes zum aktuellen Video-Paket, was einige falsch codierte Dateien mit VBR-Audio abspielbar macht.

Jeglicher Audio- und Videocodec ist erlaubt. Zu bedenken ist aber, dass VBR-Audio von den meisten Playern nicht gut unterstützt wird. Das AVI-Dateiformat macht es möglich, VBR-Audio zu verwenden, doch die meisten Player erwarten CBR-Audio, weswegen VBR-Audio nicht funktioniert. VBR ist ungewöhnlich, und Microsofts Spezifikation zu AVI beschreibt nur CBR-Audio. Ausserdem ist zu bedenken, dass die meisten AVI-Encoder/Multiplexer schlechte Dateien mit VBR-Audio erzeugen. Es gibt nur zwei Ausnahmen: NanDub und MEncoder.

  • AVInfo - utility zum Anzeigen von AVI-header-Informationen. Im einzelnen werden Auflösung des Videos, Abspielzeit, framerate des Videos und Videocodec angezeigt; ausserdem Audio samplerate, Abspielzeit, Audiobitrate und Audiocodec.
$ avinfo file.avi
file.avi, 102Mb
video: 528x384 00:05:40 25fps DivX5 2.3Mbps
audio: 48KHz  00:05:39 Stereo 128Kbps mp3
$ file file.avi
file.avi: RIFF (little-endian) data, AVI, 528 x 384, 25.00 fps, video: DivX 5,
audio:MPEG-1 Layer 3 (stereo, 48000 Hz)
$ transcode -i file.avi -c 0-0
[transcode] V: import format | DivX5 RIFF data, AVI (V=ffmpeg|A=mp3)
[transcode] V: import frame  | 528x384  1.38:1
[transcode] A: import format | 0x55    MPEG layer-3 [48000,16,2] 128 kbps

Reparieren einer nicht-synchronen Audio-Spur

Dies funktioniert nicht mit AVI-Dateien, die VBR/ABR MP3-Dateien verwenden. Dieser Schritt benutzt avisync, das Teil des Transcode-Pakets ist.

$ avisync -i unsynchedfile.avi -o synchedfile.avi -n -2

Zerteilen einer AVI-Datei

Dies funktioniert nicht mit AVIs, die VBR/ABR MP3-Dateien benutzen. Dieser Schritt benutzt "avisplit", welches Teil des Transcode-Pakets ist. Es soll nur mit durch transcode erzeugten AVI-Dateien verwendet werden.

 $ avisplit -i infile.avi -o oufile -s 100
  • -i name.avi bezeichnet die Eingabedatei
  • -o newname.avi bezeichnet die Ausgabedatei
  • -f f1-f2 gibt an, dass die Datei nach einer festen Anzahl frames gespalten werden soll
  • -s 100 gibt an, dass die Datei nach 100 MB gespalten werden soll. Die Ausgabedateien heissen dann "outfile-0000.avi", "outfile-0001.avi" usw.
  • -t s1-s2 gibt an, dass die Datei nach einer Anzahl Sekunden gespalten werden soll.

Extrahieren des Tons aus einer AVI-Datei

Mplayer kann dazu verwendet werden, den Ton zu extrahieren. Die Option "-vo null" veranlasst Mplayer, die Videospur nicht auszugeben.

WAV-Extraktion der Tonspur, Umwandlung in PCM und Schreiben des Ergebnisses in die Datei "audio.wav".

$ mplayer -vo null -nogui -ao pcm -aofile audio.wav myvideo.avi

Weblinks

Vorlage:dewi Vorlage:enwi