Multimediatechnik / Video Video-Verarbeitung Verarbeitung / Codecs / Formate Decodierung, Encodierung http://www.nanocosmos.de/lietz/mtv Oliver Lietz - Multimediatechnik / Video - 2010 1 Inhalt Video-Verarbeitung: Verarbeitung: Wiedergabe, Aufnahme Multimedia-Architekturen, Player Codecs und Dateiformate: AVI, MOV, Unkomprimierte und komprimierte Speicherung 2
Videoverarbeitung / Wiedergabe / De-Codierung Einlesen von Videodaten von einer Quelle Disk/Internet/WLAN, Auspacken (Dateiformat) Audio/Video trennen ( Splitten( Splitten, Demultiplex ) Decodieren (Codec( Codec) Audio/Video getrennt voneinander Anzeige (Renderer( Renderer,, Grafikkarte, Soundkarte) Audio/Video getrennt Format unkomprimiert je nach Hardware/Treiber z.b. RGB, YUV Neu: auch komprimiert möglich m (Decodierung auf der Hardware!) 3 Video-Wiedergabe Quelle Splitter Decoder Ausgabe (Renderer( Renderer) Bild und Ton wird getrennt verarbeitet (decodiert) Beispiel mit MPEG-4-Video im AVI (XVid/Divx( XVid/Divx) ) + MP3-Audio 4
Video-Wiedergabe Beispiel: MPEG-Video Komprimierte, gepackte Daten (MPEG) Ab hier unkomprimiert! (Video: RGB / YUV, Audio: PCM) 5 Wiedergabe mit DirectShow / WindowsMedia Zusammenschalten von Filtern über Pins Datenfluss durch den Filter-Graphen Ähnliches Prinzip bei Quicktime u.v.a. Hilfsmittel (Tool): GraphEdit (Microsoft) / GraphStudio (OpenSource) 6
Programmierprinzip: Microsoft DirectShow COM-Objekte Objekte mit eindeutigen GUIDs werden verbunden C++ / C# / Delphi / VB / (nicht Java) Jeder Filter und jeder Pin ist ein Objekt mit Interface IFilter, IPin, IFilterGraph, IFilter mysourcefilter ( ID_FileSource ) ; mysourcefilter.setfilename(.setfilename( C: C:\test.avi ) ) ; IPin mypin = mysourcefilter.getpin(0) ; mypin.connect.connect(( videowindow.getpin(0) ); Filtergraph.run(); 7 Anforderungen Video-Wiedergabe Dateiformat erkennen Problemfall: Dateiformat nicht bekannt Video und Audio trennen (De( De-Multiplex) Problemfall: Sync,, Bild oder Ton fehlt oder versetzt Video und Audio decodieren (2 Decoder!) Problemfälle: lle: Decoder fehlt oder fehlerhaft, CPU zu langsam (ruckeln) Video und Audio darstellen Problemfall: Displaygröß öße/auflösung/typ Größ ößenänderung/de-interlace, 8
Video-Aufzeichnung (Capture( Capture) Eingabe-Ger Gerät t (Capture( Device): Video/Audio getrennt Codierung (Encoder( Encoder): Video/Audio getrennt Multiplex: Video/Audio kombiniert Ziel (Datei) uncompressed compressed 9 Videoverarbeitung / En-Codierung Aufnahme / Capture Wie wird Digitales Video erzeugt? Analog/Digital-Wandlung (Kamera, Capture-Device Device) Unkompromimertes Video (RGB/YUV) Codierung (Kompression) Verpacken in Dateiformat Export / Speicherung Codierung/Kompression/Packen Ausgabe auf DVD, Internet, Mobilgeräte 10
Video-Bearbeitung Schnitt, Blenden, Effekte, Helligkeit, Kontrast Alles nur unkomprimiert möglichm (wenige Ausnahmen) Meist notwendig: Decodierung Verarbeitung - Encodierung Verluste entstehen mit jedem Arbeitsschritt! 11 Was ist ein Codec? Codecs Codierer + Decodierer = CoDec Codierer (Encoder,, Kompressor) Decodierer (Decoder, Decompressor, Player) Videocodec + Audiocodec + Multiplex Hardware- oder Softwaremodul 12
Merke: Codecs Encoding: : Aufzeichnung / Erstellung von Videomaterial Decoding: : Wiedergabe / Playback Dateiformat: kapselt Codec(s) Multiplex: Audio + Video + Sync, Timecodes,, Untertitel, 13 Dateiformate Video-Dateiformate / Codecs Dateiformat = Container für f Codec AVI Apple Quicktime MP4 / 3GP VOB (DVD) MTS (Blueray( Blueray) MPG, TS Adobe Flash WindowsMedia RealVideo Matroska (OpenSource) Codecs DV, MPEG-4/DivX, UYVY, Avid,, DV, H.264 u.a. MPEG-4, AVC/H.264 MPEG-2 MPEG-2 2 / H.264 MPEG-2 H.263, VP-6, H.264 WMV9 RealVideo10 verschiedene 14
Video-Dateiformate Videodaten ohne Zusatzinfo = Raw ( Elementardaten ) Zur Verarbeitung zusätzlicher Header sinnvoll Größ öße, Breite, FPS, Format (YUV, RGB, MPEG, ) Prinzip: Information (Header( Header) ) + Nutzdaten (Payload( Payload) 15 Video-Dateiformate AVI, Quicktime (MOV), MP4, WMV, usw. Jedes Dateiformat kann prinzipiell unkomprimierte oder verschiedene komprimierte Formate enthalten Einpacken der Video- und Audiodaten (Multiplex) 16
AVI (Video for Windows) Audio/Video Interleaved (nur) Container für f r verschiedene Formate Header: Auflösung (Breite/Höhe), Komprimierung, usw. Width Breite (z.b. 720) Height Höhe (z.b. 576) Planes BitCount Compression Farbkanäle (z.b. 3) Farbauflösung (z.b. 24) z.b. RGB,, UYVY, DIVX, H264 (FOURCC = 4 Character Code) 17 AVI-File (Audio( Audio-Video-Interleaved) Aufbau aus Teilen ( Chunks( Chunks ), die durch 4 Buchstaben gekennzeichnet sind RIFF -AVI -hdrl -avih -strl -strh -strf -strd -strn -movi -[data subchunks] -idx1 -[index data] RIFF HEADER AVI CHUNK MAIN AVI HEADER AVI HEADER STREAM LIST [One per stream: : Audio, Video, etc.] STREAM HEADER STREAM FORAMT OPTIONAL -- STREAM DATA OPTIONAL -- STREAM NAME MOVIE DATA RAW DATA (hier die eigentlichen Bild-Daten, z.b: : RGB) AVI INDEX INDEX DATA 18
Quicktime (MOV) / MP4 Für r Mac und Windows verfügbar (Installer( Installer) Architektur MOV = Container für f r verschiedene Codecs Quicktime Player zum Abspielen Quicktime Player Pro zum Codieren/Speichern Codecs/Plugins installierbar MOV = MP4, nicht verwechseln mit MPEG-4 Dateiformate sind fast gleich 19 AVI-Export 20
Wie bei AVI zahlreiche Codecs innerhalb des MOV-Formates Quicktime-Export Gleiche Codecs, Verschiedene Dateiformate! 21 Planar Datenspeicherung RGB / YUV im Speicher / auf Festplatte (unkomprimiert) R,G,B / Y,U,V: jeweils Byte-Werte (8 Bit) Gepackt RRRR GGGG BBBB RRRR GGGG BBBB RRRR GGGG BBBB RRRR GGGG BBBB RGB RGB RGB RGB RGB RGB RGB RGB RGB RGB RGB RGB RGB RGB RGB RGB YYYY UU VV YYYY UU VV YYYY YYYY YUV YUV YUV YUV YUV YUV YUV YUV YUV YUV YUV YUV YUV YUV YUV YUV Beispiele: 720x576 Y, 360x288 U, 22
YUV-Speicherung YUV Uncompressed 4 Zeichen ( FOURCC( FOURCC ) z.b. YUYV = 4:2:2, YV12 = 4:2:0 Bildgröß öße e 720x576 -> > 1 Bildzeile im Speicher = 720+360+360 = 1440 Bytes Vorteil: besserer Speicherzugriff Wikipedia / http://www.fourcc.org 23 Datenspeicherung MPEG (komprimiert) Was steht in den MPEG-Videodaten? Quantisierte und lauflängencodierten DCT-Werte blockweise Speicherung max. 8x8=64, aber viele Werte sind 0 und fallen weg! Zahlreiche Header + Sync-Codes für r Fehlerschutz MPEG Sequence (Sync Sync code 0x1B) Picture Header (Sync code ) Block Header (8x8-DCT DCT-Block) VLC-Codes Codes für r max. 8x8 Werte 24