Multimedia und seine Abarten

Einleitung

AVI

Bei AVI werden die unterschiedlichen Daten in ineinander verschachtelten (interleaved) Datenstrukturen, so genannten Streams abgespeichert. Das AVI-Format bildet hierbei lediglich den Container. Die Daten selbst können mittels unterschiedlicher Verfahren komprimiert sein. Die Aufgabe der (De-)Komprimierung übernimmt der Codec. Die Kennzeichnung, in welchem Format die eigentlichen Daten vorliegen, steht im FourCC (Four Character Code), einem vier Zeichen Langen Feld im Header der AVI-Datei.

MPEG

Die Moving Picture Experts Group (MPEG) ist eine Gruppe von Experten, die sich mit der Standardisierung von Videokompression und den dazugehörenden Bereichen, wie Audiokompression oder Containerformaten, beschäftigt. Oftmals wurden Ideen der International Telecommunication Union (ITU) aufgegriffen, erweitert und verbessert. Seit dem ersten Treffen 1988 hat sich die Gruppe auf etwa 360 Mitglieder von verschiedenen Firmen und Universitäten vergrößert.

Die offizielle Bezeichnung für MPEG ist ISO/IEC JTC1/SC29/WG11 (International Organization for Standardization / International Electrotechnical Commission, Joint Technical Committee 1, SubComittee 29, Working Group 11).

MPEG-Formate

Die Gruppe hat folgende Komprimierungsformate standardisiert. Sämtliche H.26x Standards sind ITU-Standards. Aber sie gehören dennoch aufgrund der Zusammenarbeit mit den MPEG-Experten dazu:

MPEG-1 1993

Progressives Video-Format mit mehreren Layern. Wird unter anderem für Video-CDs verwendet. Zum Audio-Teil gehört das populäre MP3 (MPEG-1 Layer 3).

MPEG-2 1994/95

Video- und Tonformate in Fernsehqualität. Wird auch für DVD-Videos und DVB verwendet.

MPEG-3

Hätte der Standard für HDTV werden sollen. Es genügte aber eine Erweiterung von MPEG-2. MPEG-3 kam daher nie zustande.

MPEG-4 1998/99/00/01

Die erste Version des Standards kam 1998/99 heraus. Es folgte Version 1999/00 und die Version 3 2001. MPEG-4 beschreibt u.a. ein komplexes, an QuickTime angelehntes Container-Format, eine 3D-Sprache ähnlich VRML und nicht-rechteckige Video-Objekte. Die Video-Kompression wurde nochmals verbessert. Es enthält auch Unterstützung für Digital Rights Management.

H.264 2002

Offizielle Terminologie des ITU oder MPEG-4 Teil 10 (offizielle MPEG Terminologie) ISO/IEC 14496-10 AVC. Im Sprachgebrauch auch H.26L, die Arbeit des JVT oder "JVT CODEC", Advanced Video Code (AVC), JM2.x, JM3.x und JM4.x genannt.

MPEG-7 Ein System für das Beschreiben von Multimedia-Inhalten.

MPEG-21 Ein sog. "Multimedia Framework".

MPEG standardisiert nur den Bitstream und den Dekodierer. Der Kodierer wird nicht standardisiert, so dass noch Raum für Effizienzsteigerungen bleibt. Es werden aber Musterimplementationen (verification models) vorgegeben, welche aber weder besonders schnell noch besonders effizient sind, weshalb die meisten Implementierungen von MPEG-Kodierern von Grund auf neu geschrieben sind.

Die MPEG spezifiziert sowohl Containerformate als auch Codecs. Dadurch können beispielsweise in MPEG-2 kodierte Videospuren auch in (technisch allerdings unterlegenen) AVI-Containern abgelegt werden und nicht nur in hauseigenen MPEG-Containern.

(Quelle http://www.Wikipedia.de)

MP3

Wie andere Formate setzt MP3 darauf, dass die Wahrnehmung des Menschen begrenzt ist. Die Menge der Töne, die vom Menschen beispielsweise wegen ihrer Frequenz oder Lautstärke nicht wahrgenommen werden können, wird reduziert. Das ist ein verlustbehaftetes Verfahren, d.h. das Eingangssignal kann aus dem Ausgangssignal nicht mehr reproduziert werden - Informationen gehen verloren. Die Verluste hängen stark von der Datenrate und dem zu komprimierenden Tonmaterial ab. Das MP3-Format erlaubt Kompressionsraten von 32 kBit/s bis zu 320 kBit/s. Üblich ist für Musik, die in lauter Umgebung oder bei hoher Lautstärke gehört wird eine Bitrate von 128 kBit/s, je nach Anspruch auch eine höhere. Weiterhin gibt es variable Bitraten, die sich einer gewählten Qualitätsstufe anpassen.

(Quelle http://www.Wikipedia.de)

MP2

Das auf MP2-Algorithmen basierende Musepack (früher: MPEGPlus), bietet in Bitraten über 160 kbit/s wesentlich bessere Qualitat als das MP3-Format. Dateien im Musepack-Format erkennt man an der Erweiterung mpc oder mp+.

(Quelle http://www.Wikipedia.de)

Anleitungen

Um in Erfahrung zu bringen, mit welcher AVI Version wir es zu tun haben, ist das Tool avinfo sehr nuetzlich. Ausser diesem werden benoetigt:

mjpegtools lame ffmpeg transcode vcdimager cdrtools

MJPEGTOOLS sollten nach Moeglichkeit vor transcode installiert werden, da die benoetigen Plugins sonst nicht gebaut wuerden. Die gilt ebenfalls fuer lame und ffmpeg. Ein schneller Rechner ist durchaus von Vorteil. Auf einem Pentium IV 2,53 Ghz mit 1024 RAM und einem IDE Raid 0, benoetigt ein Film von 700 MB ca. 4 Stunden. Wer Tips bzgl. Qualitaet oder Performancesteigerung hat, darf diese gerne hinzufuegen, in #pacrew zum Besten geben oder auch direkt an mich senden thyes@pilgerer.de

Encoding VCD (352x288) (PAL)

VCD Spezifikation: Video MP2, 44100 Hz, 224 kBits/s, Stereo Audio MPEG-1, 352x288, 1152 kBits/s CBR

# transcode -i test.avi -V -y mpeg2enc,mp2enc -F 1 -Z 352x288 -E 44100 -b 224 -o test

Es werden zwei seperate Dateien estellt, .m2v enthaelt den MPEG Video Stream und .mpa den Audio Stream. Die Bedeutungen der einzelnen Optionen kann der interessierte Leser in der jeweiligen Man-Page nachschlagen.

Um daraus ein MPG zu erzeugen werden die beiden Streams mittels MPLEX wieder zusammen gefuegt.

# mplex -f 1 -o test.mpg test.m1v test.mpa

Liefert als Resultat ein MPEG file.

# file test.mpg
test.mpg: MPEG system stream data

Encoding SVCD (480x576) (PAL)

SVCD Spezifikation: Audio MP2, 44100 Hz, 32-384 kBits/s, Stereo Video MPEG-2, 480x576, up to 2600 kBits/s VBR

# transcode -i test.avi -V -y mpeg2enc,mp2enc -F 4 -Z 480x576 -E 44100 -b 128 -o test

Um die Performance des Encodings zu steigern kann z.B. die Bildgroesse herab gesetzt werden. Dies geht allerdings auf Kosten der Qualitaet. Der Abschnitt der Option -B in der Man Page zu transcode liefert die benoetigen Detailinformationen dazu.

# mplex -f 4 -o test.mpg test.m2v test.mpa
# file  test.mpg
test mpg: MPEG system stream data

Evtl. ist es notwendig SVCDs einer bestimmten Groesse zu erstellen, da diese sonst nicht auf einen 700MB Rohling gebrannt werden koennen. MPLEX beginnt jedesmal mit einer neuen Output Datei wenn ein Sequenze Break erreicht wird. Eine kleine Modifikation im Namen der Output Datei veranlasst MPLEX dazu, bei jedem Sequenz Break eine neue Ausgabedatei zu beginnen. Die Ausgabedateien werden aufsteigend durchnummeriert.

# mplex -f 4 -o test%d.mpg test.m2v test.mpa

Was natuerlich auch sehr laestig sein kann, da unguenstige gesetzte Breaks z.B. eine 700 MB Datei erzeugen und den Rest in einer kleineren Datei ablegen. Hinweise wie man Sequenz Breaks entfernt oder anpasst finden sich in der Man-Page vom MPLEX.

man mplex(1)

 For VCD / SVCD a different technique is used.  If mplex  encoun-
 ters  a  sequence  break (sequence end followed by start) in the
 input video stream it starts a new output stream and file at the
 sequence  start.  Thus to split a long video across VCD's/SVCD's
 you have to get the MPEG video  encoder  to  introduce  sequence
 splits  at  the right points (see mpeg2enc(1) for details of how
 to do this).

Umstaendlicher wird es wenn man ein AVI konvertieren moechte, welches im XVID Format erstellt wurde. Mir ist es bisher nicht gelungen transcode zu uebereden die Konvertierung in einem Durchgang zu erledigen. FFMPEG leistet hier jedoch gute Dienste in dem es zuerst ein AVI erstellt (OpenDivx) welches wiederum von transcode verarbeitet werden kann.

Zuerst sollte man sich ansehen wie das vorhandene AVI codiert wurde.

# avinfo test.avi
~700Mb, 00:51:11
video: 720x394, 23.98 fps, xvid (XVID), 1711kbps
audio: 48000, Stereo, FAST Multimedia AG, 191kbps
Software: VirtualDubMod 1.5.10.1 (build 2439/release)
Codec information:
Signature: xvid (XVID)
Name: XVID MPEG-4
Download URL: 
Author: XVID
Site: http://www.xvid.org
Comment: Codec is available in source form from XVID web site.

Von Interesse ist:

video: 720x394, 23.98 fps, xvid (XVID), 1711kbps audio: 48000, Stereo, FAST Multimedia AG, 191kbps

Aus diesen Informationen koennen wir jetzt die Commandline Options fuer FFMPEG ableiten.

# ffmpeg -s 704x576 -i test.avi -sameq -ac 2 -ab 192 -ar 48000 tmp.avi

tmp.avi laesst sich nun wunderbar an transcode verfuettern ;)

Diese Variante eigent sich besonders, wenn man eine andere Tonspur untermischen moechte. Natuerlich lassen sich auch mit ffmpeg mpeg Formate erzeugen, die direkt mit svcdimager weiter bearbeitet werden koennen.

# ffmpeg -i test.avi -s 704x576 -aspect 4:3 -ar 44100 -ab 224 \
 -b 1152 -f svcd test.mpg

Um das ganze gleich in einer Sinnvollen Groesse zu kodieren, die auch auf einen Rohling passt, kann bei ffmpeg die Option -ss -t verwendet werden. Avinfo verraet uns wie lang das AVI insgesamt ist.

#  avinfo test.avi
~697Mb, 01:31:22
video: 720x528, 25.00 fps, divx (DX50), 925kbps
audio: 48000, Stereo, mp3, 127kbps

Codec information:
Signature: divx (DX50)
Name: DivX
     DivX MPEG-4 version 5
Download URL: http://www.divxmovies.com/codec/
     http://www.divxmovies.com/codec/
Author: ?
     DivX
Site: 
     http://www.divx.com
Comment: Apparently used interchangeably with "DIVX".
         Apparently this is used interchangeably with the DIVX FOURCC when
         using version 5 of the codec.

# ffmpeg -ss 00:00:00 -i test.avi -t 00:45:00 -target svcd test_1.mpg
# ffmpeg -ss 00:45:00 -i test.avi -t 01:31:22 -target svcd test_2.mpg

oder

# ffmpeg -ss 00:00:00 t 00:45:00 -i test.avi -s 704x576 -aspect 4:3 -ar 44100 -ab 224 -b 1152 -f svcd test.mpg
# ffmpeg -ss 00:45:00 -t 01:31:22 i test.avi -s 704x576 -aspect 4:3 -ar 44100 -ab 224 -b 1152 -f svcd test.mpg

Sollte nach dem Splitten Video und Audio Out-of-sync sein, helfen tcprobe und transcode. Die dritte Zeile der Ausgabe von tcprobe zeigt das Audio Format.

# tcprobe -i test.avi
# transcode -i test.avi -P1 -N 0xAA -y raw -o out.avi

Und hier das ganze nochmal mit transcode und mplex.

for i in *.avi
do
        time transcode -i "$i" -V -y mpeg2enc,mp2enc -F 4 -Z 480x576 -E 44100 -b 128 -o tmp
        mplex -f 4 -o "$i"%d.mpg tmp.m2v tmp.mpa
        rm -rf *mpa *m2v
done

SVCDs brennen

Die erstellten VCDs/SVCDs koennen mit dem Tool VCDimager in bin/cue verpackt werden, um sie dann mit cdrdao zu brennen.

Hier ein Beispiel:

# vcdimager -q -t svcd --cue-file=test.cue --bin-file=test.bin test.mpg
# cdrdao write --device device --driver generic-mmc --overburn test.cue

Multimedia (last edited 2008-07-14 09:55:45 by localhost)