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