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

Documents pareils