Multimediáln´I Kontejnery, Kodeky a Frameworky
Total Page:16
File Type:pdf, Size:1020Kb
Multimedi´aln´ıkontejnery, kodeky a frameworky David Baˇrina Multimedi´aln´ıkontejnery, kodeky a frameworky 1 / 44 Obsah Pˇrehled Uvod´ Kontejnery Kodeky Frameworky Shrnut´ı Multimedi´aln´ıkontejnery, kodeky a frameworky 2 / 44 Multim´edia • multim´edia: text, zvuk, statick´yobraz, video, metainformace, . • potˇreba: • z´ısk´avat(kamera), • ukl´adat(pevn´ydisk, komprese), • vyhled´avat(podle popisu), • pˇrehr´avat, • upravovat (stˇrihvidea), . • ukl´ad´an´ı:kontejner + kodeky Multimedi´aln´ıkontejnery, kodeky a frameworky 3 / 44 Pojmy • kontejner • datov´eproudy (audio, video, titulky, kapitoly) • napˇr.AVI, Matroska, MPEG-TS • form´atvidea • ztr´atov´a,bezeztr´atov´akomprese • napˇr.H.264, MPEG-4 ASP • kodek • kompresor + dekompresor • napˇr.x264, DivX, libavcodec • profily (z´achytn´ebody) • FourCC (4CC, four character code) • AVI • napˇr. DIVX oznaˇcujeDivX Multimedi´aln´ıkontejnery, kodeky a frameworky 4 / 44 Kontejnery AVI (Audio Video Interleave) • pˇr´ıpona .avi • spoleˇcnostMicrosoft, od roku 1992 • implementace RIFF (Resource Interchange File Format) • k identifikace kodeku FourCC (napˇr. DIVX = DivX) • nen´ımoˇzn´euloˇzittitulky, kapitoly, menu (tˇret´ıstrany) • p˚uvodn´ıomezen´ı1 GB • index podle ˇc´ıslasn´ımku (ne ˇcasu)na konci souboru (nevhodn´yke streamov´an´ı) • ˇsirok´apodpora • nem´apodporu B-sn´ımk˚u Multimedi´aln´ıkontejnery, kodeky a frameworky 5 / 44 Kontejnery Matroska • pˇr´ıpona .mkv • otevˇren´yform´at,ozn´amen2002 • podporuje vˇse,neomezen´ypoˇcetstop • zaloˇzenna EBML (Extensible Binary Meta Language) • kodek urˇcenCodecID (ˇretˇezec) • napˇr. V MPEG4/ISO/AVC = H.264 • typ V MS/VFW/FOURCC zaobaluje FourCC • http://haali.su/mkv/codecs.pdf • WebM (pˇr´ıpona .webm) je profil form´atuMatroska • Google, 2010, urˇcenpro web (HTML5) • kodeky pouze VP8 + Vorbis Multimedi´aln´ıkontejnery, kodeky a frameworky 6 / 44 Kontejnery MP4 (MPEG-4 Part 14) • pˇr´ıpona .mp4 • standard ISO, od roku 2003 (verze 2) • zaloˇzenna MPEG-4 Part 12, kter´yje zaloˇzenna QuickTime • k identifikaci objekt˚u(tak´ekodek˚u)ˇctyˇrznakov´eidentifik´atory • napˇr. avc1 pro MPEG-4 AVC • code-points, http://www.mp4ra.org/codecs.html • podporuje libovoln´ekodeky (priv´atn´ıa registrovan´e), z registrovan´ychje ˇsiroce podporovan´ychpouze p´ar Multimedi´aln´ıkontejnery, kodeky a frameworky 7 / 44 Kontejnery ASF (Advanced Systems Format) • pˇr´ıpony .asf, .wma, .wmv • Microsoft • objekty (tak´epouˇzit´ekodeky) identifikov´any GUID • zaobaluje FourCC, napˇr. DEFINE GUID(CLSID XVID, mmioFOURCC('D','I','V','X'), ... • teoreticky libovoln´ykodek • index pˇriˇrazenkl´ıˇcov´ymsn´ımk˚um,m˚uˇzeb´ytpodle ˇcasu, ˇc´ısla sn´ımkunebo ref. ˇcas.raz´ıtka Multimedi´aln´ıkontejnery, kodeky a frameworky 8 / 44 Kontejnery QuickTime • pˇr´ıpona .mov • spoleˇcnostApple, tak´eQuickTime File Format (QTFF) • je na nˇemzaloˇzenMPEG-4 Part 12 Ogg • pˇr´ıpony .ogv, .oga, .ogx, .ogg • otevˇren´yform´at • souˇc´astprojektu Ogg, zastˇreˇsen´eXiph.Org Foundation • dˇr´ıveve specifikace HTML5 • hack OGM (Ogg Media) Multimedi´aln´ıkontejnery, kodeky a frameworky 9 / 44 Kontejnery Flash Video • pˇr´ıpony .flv, .f4v • spoleˇcnostAdobe Systems (p˚uvodnˇeMacromedia) • dvˇeverze: FLV (SWF) a F4V (MPEG-4 Part 12) • omezen´apodpora kodek˚u 3GP, 3G2 • pˇr´ıpony .3gp, .3g2 • zaloˇzenyna MPEG-4 Part 12 • pro mobiln´ızaˇr´ızen´ı • omezen´apodpora kodek˚u Multimedi´aln´ıkontejnery, kodeky a frameworky 10 / 44 Kontejnery MPEG-PS • ISO, specifikov´anv MPEG-1 Part 1 a MPEG-2 Part 1 • VOB, EVO (s omezen´ımi) { DVD-Video a HD DVD • omezen´apodpora kodek˚u+ priv´atn´ıproudy MPEG-TS • ISO, 1995, specifikov´anv MPEG-2 Part 1 • m˚uˇzen´estv´ıcePS (Program Streams) • omezen´apodpora kodek˚u+ priv´atn´ıproudy • televizn´ıvys´ıl´an´ı Multimedi´aln´ıkontejnery, kodeky a frameworky 11 / 44 Multim´edia • multim´edia: text, zvuk, statick´yobraz, video, metainformace, . • potˇreba: • z´ısk´avat(kamera), • ukl´adat(pevn´ydisk, komprese), • vyhled´avat(podle popisu), • pˇrehr´avat, • upravovat (stˇrihvidea), . • ukl´ad´an´ı:kontejner + kodeky Multimedi´aln´ıkontejnery, kodeky a frameworky 12 / 44 Pojmy • sn´ımek(frame) • sn´ımkov´afrekvence • index (podle ˇcasu,ˇc´ıslasn´ımku) • typy sn´ımk˚u • kl´ıˇcov´esn´ımky(I-sn´ımky) • rozd´ılov´esn´ımky(predikce, P-sn´ımky, B-sn´ımky) • frame reordering • GOP (skupina sn´ımk˚u) Multimedi´aln´ıkontejnery, kodeky a frameworky 13 / 44 Pojmy Multimedi´aln´ıkontejnery, kodeky a frameworky 14 / 44 Techniky 0 • barevn´ymodel: Y CbCr + podvzorkov´an´ı(sub-sampling) • rozdˇelen´ına bloky • intra-sn´ımkov´ek´odov´an´ı(prostorov´aredundance) • predikce • rozdˇelitsn´ımekna bloky • transformace (DCT, DWT) • kvantizace, k´odov´an´ı 0011010 1100011 1001101 01110... 1 2 3 4 5 Multimedi´aln´ıkontejnery, kodeky a frameworky 15 / 44 Techniky • inter-sn´ımkov´ek´odov´an´ı(ˇcasov´aredundance) • kompenzace pohybu • glob´aln´ı • blokov´a{ pohybov´yvektor • s pˇresahuj´ıc´ımibloky Multimedi´aln´ıkontejnery, kodeky a frameworky 16 / 44 Form´aty videa, kodeky MPEG-1 Part 2 • vytvoˇrenMPEG, standard ISO • DCT • form´at:VCD • libavcodec MPEG-2 Part 2/H.262 • form´at • SVCD, DVD, DVB, HD DVD, Blu-ray • DCT, VBR (na rozd´ılod MPEG-1) • ˇsirok´apodpora • libavcodec Multimedi´aln´ıkontejnery, kodeky a frameworky 17 / 44 Form´aty videa, kodeky MPEG-4 Part 2 ASP/MPEG-4 ASP • form´at • zaloˇzenna ITU-T H.263, ISO, 1999 • B-sn´ımkyaˇzASP (ne SP), DCT • kodeky • libavcodec • DivX • Xvid • 3ivx • Nero Digital Multimedi´aln´ıkontejnery, kodeky a frameworky 18 / 44 Form´aty videa, kodeky MPEG-4 Part 10/H.264/MPEG-4 AVC • form´at • ISO, 2003 • Blu-ray, HD DVD, DVB (CTˇ HD + Nova HD) • I/P/B-sn´ımky, DCT/WHT • kodeky • libavcodec (pouze dekomprese) • x264 (pouze komprese) • DivX (H.264) • Nero Digital • CoreAVC (pouze dekomprese) Multimedi´aln´ıkontejnery, kodeky a frameworky 19 / 44 Form´aty videa, kodeky H.265/HEVC • ve v´yvoji,vˇetˇs´ıvelikost transformace, adaptivn´ıv´ybˇer kvantizaˇcn´ımatice, . • HM-1.0 VP8 • form´at • Google, HTML5 • DCT/WHT (Walsh{Hadamard transform) • nejsou B-sn´ımky, zav´ad´ıgolden sn´ımkya altref sn´ımky • libvpx Multimedi´aln´ıkontejnery, kodeky a frameworky 20 / 44 Form´aty videa, kodeky Theora • urˇcenpro Ogg, Xiph.org Foundation • form´atzaloˇzenna VP3; DCT, I/P-sn´ımky(ne B-sn´ımky) • libtheora Dirac • BBC • DWT, I/P/B-sn´ımky • podmnoˇzina standardizov´anajako VC-2 • kodeky Schr¨odingera Dirac (dirac-research) Multimedi´aln´ıkontejnery, kodeky a frameworky 21 / 44 Form´aty videa, kodeky Windows Media Video + VC-1/SMPTE 421M • Microsoft; VC-1 (zaloˇzenona WMV 9) pozdˇejiSMPTE • HD DVD, Blu-ray; DCT, ∼MPEG • nˇekolik profil˚u,nˇekolik kodek˚uod Microsoftu (WMV 9) nestandardizovan´e • Huffyuv • Lagarith • MJPEG Multimedi´aln´ıkontejnery, kodeky a frameworky 22 / 44 Multim´edia • multim´edia: text, zvuk, statick´yobraz, video, metainformace, . • potˇreba: • z´ısk´avat(kamera), • ukl´adat(pevn´ydisk, komprese), • vyhled´avat(podle popisu), • pˇrehr´avat, • upravovat (stˇrihvidea), . • ukl´ad´an´ı:kontejner + kodeky Multimedi´aln´ıkontejnery, kodeky a frameworky 23 / 44 Multimedi´aln´ıframework • vˇsezaobaluje • knihovny (API), n´astroje(pˇrehr´avaˇc,CLI) • form´aty: kontejnery, kodeky, protokoly, . • poˇzadavky:modularita, ˇsirok´apodpora form´at˚u,intuitivn´ı pouˇzit´ı,dokumentace, v´ykon, platforma, . • probl´em:ˇz´adn´yneum´ıvˇse Multimedi´aln´ıkontejnery, kodeky a frameworky 24 / 44 Pojmy 0 • barevn´ymodel (RGB, Y CbCr) • form´atpixelu (RGB24) • framebuffer skutečný obraz pixel{ bajt }řádek framebuffer: ... šířka řádku délka kroku Multimedi´aln´ıkontejnery, kodeky a frameworky 25 / 44 Pˇrehr´avaˇc,kodek pˇrehr´avaˇcvidea: dekóduj inicializace destrukce snímek zobraz snímek funkce kodeku: • inicializace (alokace pamˇeti{ rozd´ılov´esn´ımky, parametry) • odhad maxim´aln´ıvelikosti zkomprimovan´ehosn´ımku • komprese sn´ımku • dekomprese sn´ımku Multimedi´aln´ıkontejnery, kodeky a frameworky 26 / 44 Multimedi´aln´ıframework nˇekter´ev´yznamn´eframeworky: • Video for Windows (VirtualDub, Media Player) • DirectShow (WMP, BSPlayer, Media Player Classic) • FFmpeg (MPlayer, VLC, ffdshow) • QuickTime (QuickTime) • Media Foundation (Windows Media Player 11/12) • GStreamer • xine, libvlc, Phonon a dalˇs´ı.. Multimedi´aln´ıkontejnery, kodeky a frameworky 27 / 44 Frameworky Video for Windows (VfW) / Video Compression Manager (VCM) • vyvinul Microsoft jako reakci na QuickTime (Apple) • prvn´ıverze (verze 1.0), listopad 1992 • vlastn´ısouborov´yform´atAudio Video Interleave (AVI) • n´astupcem se stal DirectShow • dokumentace na MSDN LONG hr ; PAVIFILE pfile ; AVIFileInit (); hr = AVIFileOpen(&pfile , szFile , OF SHARE DENY WRITE , 0L ) ; i f ( hr != 0) f r e t u r n ; g AVIFileRelease(pfile ); AVIFileExit (); Multimedi´aln´ıkontejnery, kodeky a frameworky 28 / 44 Frameworky Video for Windows (VfW) / Video Compression Manager (VCM) #i n c l u d e <vfw . h> LRESULT WINAPI DriverProc( DWORD dwDriverId , HDRVR hdrvr , UINT msg , LONG lParam1 , LONG lParam2) f s w i t c h ( msg ) f case ICM COMPRESS : // komprimuj snimek r e t u r n Compress ( ( ICCOMPRESS∗)lParam1 , (DWORD)lParam2 ); case ICM DECOMPRESS : // dekomprimuj snimek r e t u r n Decompress ( (ICDECOMPRESS∗)lParam1 , (DWORD)lParam2 ); g g kodek: zkompilovat jen plugin Multimedi´aln´ıkontejnery, kodeky a frameworky 29 / 44 Frameworky Video for Windows (VfW) / Video Compression Manager (VCM) Multimedi´aln´ıkontejnery, kodeky a frameworky 30 / 44 Frameworky DirectShow (DShow, DS) • n´astupce VfW; n´astupcem Media Foundation • zaloˇzenna objektov´emmodelu COM (Component Object Model) • graf sloˇzen´yz filtr˚u • automatick´akonverze barevn´ychmodel˚u(proti