78 KiB
ðºðž ðšð³ ð¯ðµ ð®ð¹ ð°ð· ð·ðº ð§ð· ðªðž
ã¯ããã«
ããã¯ããããªæè¡ã«é¢ããããããè§£èª¬è³æã§ãããœãããŠã§ã¢éçºè ããšã³ãžãã¢ã察象ã«ããŠããŸããã誰ã§ãçè§£ã§ãã解説ã«ããããšæã£ãŠããŸãããã®ã¢ã€ãã£ã¢ã¯ããããªæè¡ååŠè ã®ããã®ããã¯ãŒã¯ã·ã§ããããçãŸããŸããã
ã§ããã ãç°¡æœãªèšèãå€ãã®èŠèŠçèŠçŽ ãå ·äœçãªäŸã䜿ãããšã§ã誰ã§ãããžã¿ã«ãããªã®æŠå¿µãçè§£ã§ããããšãç®æšã«ããŠããŸããæ°è»œã«èšæ£ãææ¡ãéããæ¹åããŠãã ããã
æ¬è³æã«ã¯ãã³ãºãªã³ã«ãã解説ãå«ãŸããŠããŸãããã³ãºãªã³ã«åãçµãæ¹ã¯ãäºåã«dockerãã€ã³ã¹ããŒã«ãããã®ã¬ããžããªãã¯ããŒã³ããŠãããŠãã ããã
git clone https://github.com/leandromoreira/digital_video_introduction.git
cd digital_video_introduction
./setup.sh
泚æ:
./s/ffmpegã./s/mediainfoã³ãã³ãã¯ããã®ããã°ã©ã ãDockerã³ã³ããäžã§å®è¡ãããããšãæå³ããŠããŸããã³ã³ããã®äžã«ã¯ãå¿ èŠãªäŸåé¢ä¿ãå šãŠå«ãŸããŠããŸãã
ãã³ãºãªã³ã¯ãã¹ãŠããã®ã¬ããžããªãã¯ããŒã³ãããã©ã«ãã§å®è¡ããŠãã ããã jupyter examplesã«ã€ããŠã¯ã./s/start_jupyter.shã§ãµãŒããŒãèµ·åããŠã衚瀺ãããURLããã©ãŠã¶ã§éããŠãã ããã
倿Žå±¥æŽ
- DRMã·ã¹ãã ã®è¿œå
- 1.0.0çã®ãªãªãŒã¹
- ç°¡äœåèš³ã®è¿œå
- FFmpeg oscilloscopeãã£ã«ã¿ãŒã®äŸã远å
ç®æ¬¡
- ã¯ããã«
- ç®æ¬¡
- åºæ¬çšèª
- åé·æ§é€å»
- ãããªã³ãŒããã¯ã®ä»çµã¿
- äœã? ãªã? ã©ã®ããã«?
- æŽå²
- äžè¬çã³ãŒããã¯
- ã¹ãããïŒ - ç»ååå²
- ã¹ãããïŒ - äºæž¬
- ã¹ãããïŒ - 倿
- ã¹ãããïŒ - éåå
- ã¹ãããïŒ - ãšã³ããããŒç¬Šå·å
- ã¹ãããïŒ - ãããã¹ããªãŒã ãã©ãŒããã
- ãããã
- ã©ã®ããã«H.265ã¯H.264ãããè¯ãå§çž®çãå®çŸããŠããã®ã?
- ãªã³ã©ã€ã³ã¹ããªãŒãã³ã°
- jupyterã®äœ¿ãæ¹
- ã«ã³ãã¡ã¬ã³ã¹
- åèæç®
åºæ¬çšèª
ç»åã¯ãäºæ¬¡å ãããªã¯ã¹ãšããŠèããããšãã§ããŸããããã«æ¬¡å ãå¢ãããŠäžæ¬¡å ãããªã¯ã¹ã«ããããšã§ç»åã®è²ã衚çŸããããšãå¯èœã§ãã
ç»åã®è²ãåè² (èµ€ãç·ãé)ã§è¡šçŸãããšãäžã€ã®å¹³é¢ãå®çŸ©ããããšã«ãªããŸããäžã€ããèµ€ãäºã€ç®ãç·ããããŠäžã€ç®ãéã§ãã
ãããªã¯ã¹ã®ããããã®èŠçŽ ããã¯ã»ã« (ç»çŽ )ãšåŒã³ãŸããäžã€ã®ãã¯ã»ã«ã¯ãã®è²ã®åŒ·åºŠ (éåžžã¯æ°å€)ã衚ããŸããäŸãã°ãèµ€è²ã®ãã¯ã»ã«ã¯ãç·ã0ãéã0ãèµ€ãæå€§ã®åŒ·åºŠã«ãã衚çŸã§ããŸãããã³ã¯è²ã®ãã¯ã»ã«ãåæ§ã«3ã€ã®å€ã§è¡šçŸã§ããŸãã0ãã255ã®æ°å€ã§è¡šçŸããããšã«ããããã³ã¯ãã¯ã»ã«ã¯èµ€=255ãç·=192ãé=203ãšå®çŸ©ã§ããŸãã
ã«ã©ãŒç»åã笊å·åããå¥ã®æ¹æ³
è²ã衚çŸããæ¹æ³ã¯ãä»ã«ããããããããŸããäŸãã°ãRGBã¢ãã«ã§ã¯åãã¯ã»ã«ã§3ãã€ããå¿ èŠãšããŸãããã€ã³ããã¯ã¹ãã¬ããã¯1ãã€ãããå¿ èŠãããŸããããããã£ãã¢ãã«ã§ã¯ãè²ã衚çŸããããã«äžæ¬¡å ã¢ãã«ã䜿ããã«äºæ¬¡å ã¢ãã«ã䜿çšã§ããã§ããããã¡ã¢ãªãç¯çŽã§ããŸãããè²ã®éžæè¢ãçããããšã«ãªããŸãã
äŸãã°ãäžã®ç»åãã¿ãŠãã ããã1çªå·Šã®ç»åã¯è²ä»ããããŠãããä»ã®ç»åã¯èµ€ãç·ãéã®åŒ·åºŠã衚ãå¹³é¢ã§ã(ã°ã¬ãŒããŒã³ã§è¡šç€ºããŠããŸã)ã
èµ€è²ãæãå€ã䜿ãããŠããããšãåãããŸã(å·Šããäºçªç®ã®é¡ã®æãæããéšå)ãäžæ¹éè² ã¯æã®äžéšãšããªãªã®ç®ã«ããã¿ãããŸãã(æåŸã®é¡) ãããªãªã®ã²ãã«å¯ŸããŠã¯ãã©ã®è²ãããŸã䜿ãããŠããªã(æãæãéšå)ããšãåãããŸãã
åè²ã®åŒ·åºŠã¯ãããæ·±åºŠãšãã°ããäžå®éã®ãããã§è¡šçŸãããŸããè²(å¹³é¢)ããšã«8ããã(0ãã255ã®å€ã§è¡šçŸãã)ã䜿ãå Žåã24ããã(8ããã x 3次å R/G/B)ã®è²æ·±åºŠãæã€ããšã«ãªãã2ã®24ä¹çš®é¡ã®è²ã䜿ããããšãæšæž¬ã§ããŸãã
ç»åãã©ã®ããã«äžç©ãããããšããŠãšãããã®ããåŠã¶ãš è¯ãã§ããã
ããäžã€ã®ç»åã®ããããã£ã¯ è§£å床ã§ããè§£å床ã¯é·ããããã®ãã¯ã»ã«ã®æ°ã§ããè§£å床ã¯ããå¹ x é«ããšããŠè¡šçŸãããŸããäŸãã°ãäžèšã¯4Ã4ã®ç»åã§ãã
ãã³ãºãªã³: ç»åãšè²ã®å®éš
jupyter (pythonãnumpyãmatplotlibããã®ä»)ã䜿ã£ãŠãç»åãšè²ã®å®éšãããŸãããã
(ãšããžæ€åº, ã·ã£ãŒãå, ãŒããçã®)ç»åãã£ã«ã¿ãã©ã®ããã«åãããåŠã³ãŸãããã
ç»åããããªã®äœæ¥ãããæã«ã¿ãããäžã€ã®ããããã£ã¯ ã¢ã¹ãã¯ãæ¯ã§ããã¢ã¹ãã¯ãæ¯ã¯ãç»åããã¯ã»ã«ã®å¹ ãšé«ãã®æ¯çã衚ããŸãã
åç»ãç»åã16x9ã§ãããšèšããšãã¯ããããŠãç»é¢ã¢ã¹ãã¯ãæ¯ (DAR) ã®ããšãæããŸããããããåã ã®ãã¯ã»ã«ãæ§ã ãªåœ¢ç¶ã«ããããšãã§ããããã ãã¯ã»ã«ã¢ã¹ãã¯ãæ¯ (PAR) ãšãããŸãã
DVDã®ç»é¢ã¢ã¹ãã¯ãæ¯ã¯4:3
DVDã®å®éã®è§£å床ã¯704x480ã§ããã10:11ã®ãã¯ã»ã«ã¢ã¹ãã¯ãæ¯ãæã£ãŠããããã4:3ã®ã¢ã¹ãã¯ãæ¯ãä¿ã£ãŠããŸã(704x10/480x11)ã
æåŸã«ããããªãåäœæéå ã®nãã¬ãŒã ã®äžŠã³ãšããŠå®çŸ©ã§ããããäžã€ã®ç¹æ§ãšèŠãããšãã§ããŸããnã¯ãã¬ãŒã ã¬ãŒããããã¯ç§éãã¬ãŒã æ° (FPS)ã§ãã
ãããªã衚ãããã«å¿ èŠãªç§éãããã®ãããæ°ã¯ãããã¬ãŒãã§ãã
ãããã¬ãŒã = å¹ x é«ã x ãããæ·±åºŠ x ãã¬ãŒã ã¬ãŒã
äŸãã°ãå§çž®ãå šã䜿ããªããªãããã¬ãŒã ã¬ãŒãã30ã§ããã¯ã»ã«ãããã24ãããã§ãè§£å床ã480x240ã®ãããªã¯ãç§éããã82,944,000ããããããã¯82.944 Mbps (30x480x240x24)ãå¿ èŠã§ãã
ãããã¬ãŒããã»ãšãã©äžå®ãªããåºå®ãããã¬ãŒã(CBR)ãšåŒã°ããŸãããããã¬ãŒããå€åãããªããå¯å€ãããã¬ãŒã (VBR)ãšåŒã°ããŸãã
ãã®ã°ã©ãã¯ãã¬ãŒã ãçã£é»ã®éã¯ããŸããããã䜿ããªããå¶çŽä»ãã®VBRã瀺ããŠããŸãã
黿æã«ãæè¡è ãã¡ã垯åå¹ ãå¢ãããã«ãããªç»é¢ã§èªèã§ãããã¬ãŒã ã¬ãŒããåã«ããæè¡ãæãã€ããŸããããã®æè¡ã¯ã€ã³ã¿ãŒã¬ãŒã¹åç»ãšããŠç¥ãããŠããŸããåºæ¬çã«ã¯äžã€ç®ã®ããã¬ãŒã ãã§ç»é¢ã®ååãéããæ¬¡ã®ããã¬ãŒã ãã§æ®ãã®ååãéããŸãã
仿¥ã§ã¯ ããã°ã¬ãã·ãã¹ãã£ã³æè¡ã䜿ã£ãŠç»é¢ã«æç»ãããŸããããã°ã¬ãã·ãã¯ãåç»ãæç»ãä¿åã転éããææ®µã®äžã€ã§ãåãã¬ãŒã ã®å šèµ°æ»ç·ãé çªã«æç»ããŸãã
ããã§ç»åãã©ã®ããã«ããžã¿ã«è¡šçŸãããã®ããåãããŸãããè²ãã©ã®ããã«é 眮ããããããªã衚ãã®ã«ã©ã®ãããã®ç§éãããã®ããããå¿ èŠãªã®ãããããåºå®ãªã®ã(CBR)å¯å€ãªã®ã(VBR)ãè§£å床ãšãã¬ãŒã ã¬ãŒããä»ã«ãã€ã³ã¿ãŒã¬ãŒã¹ããã¯ã»ã«ã¢ã¹ãã¯ãæ¯ããã®ä»ã®ããããã®çšèªãåŠã³ãŸããã
ãã³ãºãªã³: ãããªããããã£ã調ã¹ã
ffmpegãmediainfoã䜿ã£ãŠèª¬æããããããã£ã®ã»ãšãã©ã調ã¹ãããšãã§ããŸãã
åé·æ§é€å»
å§çž®ãªãã«ãããªãæ±ãããšã¯äžå¯èœã§ããããšãåŠã³ãŸãããè§£å床ã720pã§30fpsã®å Žåã1æéã®ãããªäžã€ã«278GB*ãå¿ èŠã§ãã(PKZIPãGzipãPNGã§äœ¿ãããŠãã)DEFLATE ã®ãããªå¯éå§çž®ã¢ã«ãŽãªãºã äžã€ã䜿ãã ãã§ã¯å¿ èŠãªåž¯åå¹ ãååã«åæžã§ããªãããããããªãå§çž®ããå¥ã®æ¹æ³ãèŠã€ããå¿ èŠãããã®ã§ãã
* ãã®æ°å€ã¯1280 x 720 x 24 x 30 x 3600 (å¹ ãé«ãããã¯ã»ã«ãããã®ãããæ°ããã¬ãŒã ã¬ãŒããç§åäœã§ã®æé)ãæããããšã§ç®åºããŸãã
ãããæãéããããã«ãç§ãã¡ã®èŠèŠã®ä»çµã¿ãå©çšããããšãã§ããŸããç§ãã¡ã¯è²ãããæãããèŠåããããšãåŸæã§ãããŸãããããªã«ã¯å°ãã®å€åãããªãå€ãã®ç»åãå«ãŸããŠããæéçç¹°ãè¿ãããããŸããããããã®ãã¬ãŒã ããŸããå€ãã®é åã§ã¯åãã䌌ãŠããè²ã䜿ãããŠããç»åå ã®ç¹°ãè¿ãããããŸãã
è²ãæãããšç§ãã¡ã®ç®
ç§ãã¡ã®ç®ã¯è²ãããæããã«ããææã§ãããã®ç»åãã¿ãŠãããèªåèªèº«ã§ç¢ºèªã§ããŸãã
å·ŠåŽã®æ£æ¹åœ¢Aãšæ£æ¹åœ¢Bã®è²ã¯åãã§ããããšãåãããªããšããŠã倧äžå€«ã§ããç§ãã¡ã®è³ã¯è²ãããææã«æ³šæãã¯ããããšã§é¯èŠãèµ·ããããŠããã®ã§ããå³åŽã§ã¯ãåãè²ã®ã³ãã¯ã¿ãŒããããããç§ãã¡ïŒç§ãã¡ã®è³ïŒã¯ããããã¯å®éã¯åãè²ã§ãããšããããšãç°¡åã«æ°ã¥ããŸãã
ç§ãã¡ã®ç®ãã©ã®ããã«æ©èœãããã®ç°¡åãªèª¬æ
çŒã¯è€éãªåšå®ã§ãããããã®ããŒãããæãç«ã£ãŠããŸãããäž»ã«éäœçްèãšæ¡¿äœçްèã«é¢å¿ããããŸããçŒã¯ 1å2000äžã®æ¡¿äœçްèãš600äžã®éäœçްèãå«ãã§ããã®ã§ãã
ãã®ãããç°¡åã«ãããããçŒã®ããŒãã®æ©èœã®ãã¡è²ãšæããã«çŠç¹ãåœãŠãŸããããæ¡¿äœçްèã¯äž»ã«æããã«å¯ŸããŠè²¬ä»»ãæã£ãŠããŸããäžæ¹ éäœçްèã¯è²ã«å¯ŸããŠè²¬ä»»ãæã£ãŠããŸããç°ãªã£ãè²çŽ ãæã€3çš®é¡ã®éäœããããååã¯Séäœ(é)ãMéäœ(ç·)ãLéäœ(èµ€)ã§ãã
ç§ãã¡ã¯éäœçްè(è²)ãããå€ãã®æ¡¿äœçްè(æãã)ãæã£ãŠãããããè²ãããææãããèå¥ããããšãã§ããããšãæšè«ã§ããŸãã
ã³ã³ãã©ã¹ãæåºŠç¹æ§ (Contrast sensitivity functions)
å®éšå¿çåŠãã¯ããããŸããŸãªåéã®ç ç©¶è ãã人éã®èŠèŠã«ã€ããŠå€ãã®çè«ãäœãäžããŠããŸããããã®ã²ãšã€ããã³ã³ãã©ã¹ãæåºŠç¹æ§ãã§ããã³ã³ãã©ã¹ãæåºŠç¹æ§ã¯å ã®æç©ºéã«é¢ãããã®ã§ãããŸãã芳å¯è ã«ããå ãæç€ºããå ãå€åãããŠãããŸãããã®ç¹æ§ã¯ã芳å¯è ãå€åã«æ°ä»ãããšå ±åãããŸã§ãã©ãã ãå ãå€åãããå¿ èŠããããã瀺ããŸããè€æ°åœ¢ã®
functionsãšãªã£ãŠããã®ã¯ãçœé»ã ãã§ãªããã«ã©ãŒã§ãæåºŠã枬å®ã§ããããã§ããå®éšçµæãããå€ãã®å Žåã人éã®ç®ã¯è²ãããæããã«ææã ãšããããŸããã
ç§ãã¡ã¯èŒåºŠ(ç»åã®æããã®åºŠåã)ã«ããææã§ããããšãåãããŸããããã®ç¹æ§ãå©çšããŸãããã
ã«ã©ãŒã¢ãã«
RGBã¢ãã«ã䜿ã£ãŠã«ã©ãŒç»åãã©ã®ããã«æ©èœããã®ãæåã«åŠã³ãŸããããä»ã®ã¢ãã«ãååšããŸããå®ã¯ãèŒåºŠ(æãã)ãšè²åºŠ(è²)ãå¥ã«ããã¢ãã«ãååšããŸããããã¯YCbCr*ãšããŠç¥ãããŠããŸãã
* åãåé¢ãè¡ãã¢ãã«ã¯ãã£ãšååšããŸãã
ãã®ã«ã©ãŒã¢ãã«ã¯æããã衚ãããã«Yã䜿ããïŒã€ã®è²ãã£ã³ãã«Cb (éã®è²å·®)ãšCr (èµ€ã®è²å·®)ã䜿ããŸããYCbCrã¯RGBããçæããããšãã§ããRGBã«æ»ãããšãã§ããŸããäžã®åçã®ããã«ããã®ã¢ãã«ã䜿ã£ãŠãã«ã«ã©ãŒã®ç»åãäœãããšãã§ããŸãã
YCbCrãšRGBéã®å€æ
äžã«ã¯ ç·ãªãã§è²ã®å šãŠãçæã§ããã®ããšç°è°ãå±ããæ¹ãããã§ãããã
ãã®è³ªåã«çããããã«ãRGBããYCbCrãžã®å€æãäžéã説æããŸããITU-Rã°ã«ãŒã* ã«ãã£ãŠæšå¥šããã BT.601æšæº ããã®ä¿æ°ã䜿ããŸããæåã®ã¹ãããã¯ãèŒåºŠãèšç®ããããšã§ããITUã«ææ¡ãããŠãã宿°ã䜿ããRGBå€ã眮ãæããŸãã
Y = 0.299R + 0.587G + 0.114B
èŒåºŠããããšæ¬¡ã«ãè²ãåãã (éã®è²å·®ãšèµ€ã®è²å·®)ããšãã§ããŸãã
Cb = 0.564(B - Y)
Cr = 0.713(R - Y)
ãããæ»ãããšãã§ããYCbCrã䜿ã£ãŠç·ãåŸãããšãã§ããŸãã
R = Y + 1.402Cr
B = Y + 1.772Cb
G = Y - 0.344Cb - 0.714Cr
* ã°ã«ãŒããæšæºã¯ããžã¿ã«ãããªã§ã¯ããã§ãŠããŸãã圌ãã¯äœãæšæºãªã®ããå®çŸ©ããŸããäŸãã°4Kãšã¯äœãïŒã©ã®ãã¬ãŒã ã¬ãŒããè§£å床ãã«ã©ãŒã¢ãã«ã䜿ãã¹ããïŒãªã©ã§ãã
äžè¬çã«ãã£ã¹ãã¬ã€ (ã¢ãã¿ãŒããã¬ããã¹ã¯ãªãŒã³ç) ã¯æ§ã ãªæ¹æ³ã§æ§æãããRGBã¢ãã«ã ããå©çšããŸããäžã®åçã§ããã€ãæ¡å€§ãããã®ç€ºããŠããŸãã
ã¯ãããµããµã³ããªã³ã°
ç»åã¯èŒåºŠãšè²åºŠæåã§è¡šçŸããããšãã§ããã®ã§ã人éã®èŠèŠã·ã¹ãã ãè²åºŠãããèŒåºŠã«ææã§ããããšãå©çšããŠæ å ±ãéžæçã«åæžããããšãã§ããŸããã¯ãããµããµã³ããªã³ã°ã¯è²åºŠã®è§£å床ãèŒåºŠã®è§£å床ããå°ããããç»å笊å·åæè¡ã§ãã
è²åºŠã®è§£å床ãã©ã®ãããå°ãããã¹ãã§ããããïŒïŒè§£å床ãšçµå (æçµçãªè² = Y + Cb + Cr)ã®ä»æ¹ãã©ã®ããã«ããããå®çŸ©ããããã€ãã®æ¹åŒããã§ã«ååšããŠããŸãã
ãããã®æ¹åŒã¯ãµããµã³ããªã³ã°ã·ã¹ãã ãšããŠç¥ãããïŒã€ã®éšåãããªãæ¯a:x:yãšããŠè¡šçŸãããŸãããã㯠a x 2ãããã¯ã®èŒåºŠãã¯ã»ã«ã«å¯Ÿããè²åºŠè§£å床ãå®çŸ©ããŠããŸãã
aïŒæšªæ¹åã®ãµã³ãã«ã®åºæ¬æ°ãéåžžã¯ïŒãxïŒ1ã©ã€ã³ç®ã®aã«çŸããè²ä¿¡å·ãµã³ãã«ã®æ°ã(aã«å¯Ÿããæ°Žå¹³è§£å床)yïŒ1ã©ã€ã³ç®ãš2ã©ã€ã³ç®ã§ã®å€åæ°
4:1:0ã¯äŸå€ã§ã
4 x 4ãããã¯ã®èŒåºŠã«ïŒã€ã®è²ä¿¡å·ãµã³ãã«ã ããå«ãã§ããŸãã
çŸä»£ã®ã³ãŒããã¯ã§ãã䜿ãããæ¹åŒã¯4:4:4(ãµããµã³ããªã³ã°ç¡ã)ã4:2:2ã4:1:1ã4:2:0ã4:1:0ã3:1:1ã§ãã
YCbCr 4:2:0çµå
ãããYCbCr 4:2:0ã䜿ã£ãŠçµåãããç»åã®æçã§ããïŒãã¯ã»ã«ã«ïŒïŒããããã䜿ããªãããšã«æ³šæããŠãã ããã
ã¯ãããµããµã³ããªã³ã°ã®äž»èŠãªåœ¢åŒã§ç¬Šå·åãããåãç»åãèŠãŠäžãããäžè¡ç®ã®ç»åã¯æçµçãªYCbCrã§ãäºè¡ç®ã®ç»åã¯è²åºŠè§£å床ã瀺ããŠããŸããå®ã«å°ããªå£åã§çŽ æŽãããçµæã§ãã
è§£å床ã720pã§30fpsã®ãããªã1æéãã¡ã€ã«ã«ä¿åããããã«ã¯278GBã®é åãå¿ èŠã«ãªãããšãå ã«èšç®ããŸãããYCbCr 4:2:0ã䜿ããšãååã®ãµã€ãº(139 GB)*ã«ããããšãã§ããŸããããããŸã çæ³ã«ã¯çšé ãã§ãã
* å¹ ãé«ãããã¯ã»ã«ããšã®ãããæ°ããã¬ãŒã ã¬ãŒããæããããšã«ãããã®å€ãèšç®ããŸãããå ã«èšç®ããæã¯ïŒïŒãããå¿ èŠã§ããããä»ã¯ïŒïŒãããããå¿ èŠãããŸããã
ãã³ãºãªã³: YCbCrãã¹ãã°ã©ã ã調ã¹ã
ffmpegã§YCbCrãã¹ãã°ã©ã ã調ã¹ãããšãã§ããŸãã ãã®ã·ãŒã³ã§ã¯éã®å¯äžçãããé«ããªã£ãŠããŸãã ãã¹ãã°ã©ã ã§ãã®ããšã瀺ãããŸãã
è²ãèŒåºŠãæãããã¬ã³ãã«ã€ããŠã®æ å
èŒåºŠãæãããã¬ã³ããè²ã«ã€ããŠè§£èª¬ããŠããçŽ æŽãããåç»ããããŸãããã²ã芧ãã ããã
ãã³ãºãªã³: YCbCr 匷床ã調ã¹ã
FFmpegã®oscilloscope filterã䜿ã£ãŠãæ åã®Yã®åŒ·åºŠãå¯èŠåã§ããŸãã
ffplay -f lavfi -i 'testsrc2=size=1280x720:rate=30000/1001,format=yuv420p' -vf oscilloscope=x=0.5:y=200/720:s=1:c=1
ãã¬ãŒã ã®çš®é¡
æ¬¡ã«æéçãªåé·æ§ã®åæžã詊ã¿ãŸãããããããããã®åã«ããã€ãã®åºæ¬ççšèªã«ã€ããŠæŒãããŠãããŸãããã30 fpsã®åç»ããããäžèšãæåã®4ãã¬ãŒã ã§ãããšããŸãã
éãèæ¯ã®ããã«ãã¬ãŒã éã«ããããã®ç¹°ãè¿ããèŠãããšãã§ããŸããèæ¯ã¯ãã¬ãŒã 0ãããã¬ãŒã 3ãŸã§å€åããŸããããã®åé¡ã«åãçµãããã«ããããã3çš®é¡ã®ãã¬ãŒã ã«æœè±¡çã«åé¡ããŸãããã
Iãã¬ãŒã (ã€ã³ãã©ãããŒãã¬ãŒã )
Iãã¬ãŒã (åç §ãããŒãã¬ãŒã ãã€ã³ãã©)ã¯èªå·±å®çµçãªãã¬ãŒã ã§ããIãã¬ãŒã ã¯ä»ã«äŸåããã«æç»ããããšãã§ãã鿢ç»ãšäŒŒãŠããŸããæåã®ãã¬ãŒã ã¯æ®éã¯Iãã¬ãŒã ã§ãããä»ã®çš®é¡ã®ãã¬ãŒã ã®éã«ãèŠåçã«Iãã¬ãŒã ãæ¿å ¥ãããŠããŸãã
Pãã¬ãŒã (äºæž¬)
çŸåšã®ç»åã¯ãã»ãšãã©æ¯åïŒã€åã®ãã¬ãŒã ã䜿ã£ãŠæç»ããããšãã§ãããšããäºå®ãPãã¬ãŒã ã¯å©çšããŠããŸããäŸãã°ã2çªç®ã®ãã¬ãŒã ã§ã¯ãããŒã«ãåã«åãããšããå€åãããããŸããã1ã€åã®ãã¬ãŒã ãåç §ãããã®ãã¬ãŒã ãšã®å·®åã ããçšããŠãã¬ãŒã 1ãåæ§ç¯ã§ããŸãã
ãã³ãºãªã³: Iãã¬ãŒã ãïŒã€ã ãã®ãããª
Pãã¬ãŒã ã¯ããå°ããªããŒã¿ãã䜿ããªãã®ã§ãå šäœãIãã¬ãŒã ã¯ïŒã€ã ãã§ãä»ã¯å šãŠPãã¬ãŒã ã®ãããªã«ãšã³ã³ãŒããããã©ãã§ãããïŒ
ãã®ãããªããšã³ã³ãŒãããåŸãåçããŠãããªã®åæ¹ã«ã·ãŒã¯ããŠãã ãããã·ãŒã¯å ã«ç§»ãã®ã«æéããããããšã«æ°ã¥ãã§ããããããã¯ãæç»ã®ããã«Pãã¬ãŒã ãåç §ãã¬ãŒã ãå¿ èŠãšãã (äŸãã°Iãã¬ãŒã )ããã§ãã
ããïŒã€æè»œã«ã§ãããã¹ããšããŠããŸãïŒã€ã®I-Frameã ãã䜿ã£ãŠãããªããšã³ã³ãŒãããŠã次ã«ïŒç§ééã§Iãã¬ãŒã ãæ¿å ¥ããŠãšã³ã³ãŒãããŠãããããããã®ãšã³ã³ãŒãçµæã®ãµã€ãºãæ¯èŒããŠãã ããã
Bãã¬ãŒã (åæ¹åäºæž¬)
éå»ãšæªæ¥ã®ãã¬ãŒã äž¡æ¹ãåç §ããããããã«é«ãå§çž®çãåŸãããšãã§ããã®ã§ã¯ãªãã§ããããïŒïŒãããBãã¬ãŒã ã®åºæ¬ã§ãã
ãã³ãºãªã³: Bãã¬ãŒã ä»ãã®ãããªãšã®æ¯èŒ
ïŒã€ã®æ¹æ³ã§ãšã³ã³ãŒãããŠã¿ãŸããããïŒã€ã¯Bãã¬ãŒã ä»ãã§ãããäžæ¹ã¯Bãã¬ãŒã ãªãã§ãšã³ã³ãŒãããŠããã¡ã€ã«ãµã€ãºããã³ç»è³ªã確èªããŠãã ããã
ãŸãšã
ãããã®ç°ãªãçš®é¡ã®ãã¬ãŒã ã¯ããé«ãå§çž®çãåŸãããã«äœ¿ãããŸããæ¬¡ã®ç¯ã§ã©ããã£ãŠãããè¡ãããã®ãèŠãŠãããŸããããããä»ã®ãšããã¯Iãã¬ãŒã ã¯éããPãã¬ãŒã ã¯æ¯èŒç軜ãã§ãããæã軜ãã®ã¯Bãã¬ãŒã ãšèããŠãããŠããã§ãããã
æéçåé·æ§ (ã€ã³ã¿ãŒäºæž¬)
æéçç¹°ãè¿ããåæžããããã«äœãã§ãããèŠãŠãããŸãããããã®çš®ã®åé·æ§ã¯ã€ã³ã¿ãŒäºæž¬ãšããæè¡ã§è§£æ±ºããããšãã§ããŸãã
ã§ããã ãå°ãªããããã䜿ã£ãŠãé£ç¶ãããã¬ãŒã 0ãšãã¬ãŒã 1ããšã³ã³ãŒãããŠã¿ãŸãããã
ïŒã€ã§ããããšãšããŠãåŒãç®ããããŸããåçŽã«ãã¬ãŒã 0ãããã¬ãŒã 1ãåŒããšããšã³ã³ãŒãããå¿ èŠãããå·®åãåŸãããšãã§ããŸãã
ããããããã«å°ãªãããããã䜿ããªããã£ãšããæ¹æ³ããããšèšã£ããã©ãã§ãããïŒãŸãããã¬ãŒã 0ããã¡ããšå®ããããåºç»ã®éåã§ãããšããŸãããããŠãã¬ãŒã 0ã®ããããã®ãããã¯ããã¬ãŒã 1äžã«ããããããããšããŸãã.ãã㯠åãæšå®ãšããŠèããããšãã§ããŸãã
Wikipedia - ãããã¯åãè£å
"ãããã¯åãè£åã¯çŸåšã®ãã¬ãŒã ãéãªããªããããã¯ã«åããŠãåãè£åãã¯ãã«ã¯ãããã®ãããã¯ãã©ãããã®ãã®ãã衚ããŸã (ååã®ãã¬ãŒã ãéãªããªããããã¯ã«åããããåãè£åãã¯ãã«ã¯ãããã®ãããã¯ãã©ããžè¡ããã衚ããšããã®ã¯ããããã誀解ã§ã)ã å ã®ãããã¯ã¯å ã®ãã¬ãŒã å ã§éåžžã¯éãªãåããŸãããããªå§çž®ã¢ã«ãŽãªãºã ã®äžã«ã¯ã ãã§ã«éä¿¡ãããç°ãªã£ãããã€ãã®ãã¬ãŒã ã®æçããçŸåšã®ãã¬ãŒã ãçµã¿ç«ãŠããã®ããããŸãã"
ããŒã«ãx=0ãy=25ããx=6ãy=26ãžç§»åãããšæšå®ããããšãã§ããŸããxãšyã®å€ã¯åããã¯ãã«ã§ããããããç¯çŽããããã®ããïŒã€ã®ãããªãã¹ãããã¯ãååã®ãããã¯äœçœ®ãšäºæž¬ããããããã¯äœçœ®ãšã®åããã¯ãã«ã®å·®åã ãããšã³ã³ãŒãããããšã§ãã æçµçãªåããã¯ãã«ã¯x=6 (6-0)ãy=1 (26-25)ã®ããã«ãªããŸãã
å®éã«ã¯ããã®ããŒã«ã¯åå²ãããŠnåã®åºç»ã«ãŸãããã§ãããããããåŠçã¯åãã§ã
ãã¬ãŒã äžã®ç©äœã¯3D空éã§ç§»åããŸããããŒã«ã¯èæ¯ã®æ¹ã«åããšå°ããããªããŸãã å®å šã«ããããããããã¯ãèŠã€ããããªãããšã¯ãããããŸãã æšå®ç»åãšå®éã®ç»åãéãããšäžèšã®ããã«ãªããŸãã
ããããåãæšå®ãé©çšãããšãåçŽãªãã¬ãŒã 差忿³ã䜿ãããããšã³ã³ãŒãããããŒã¿ãããå°ãããªãããšãåãããŸãã
å¯èŠåãããå®éã®åãè£å
ãã®ææ³ã¯å šãŠã®ãããã¯ã«é©çšãããé«ã確çã§ããŒã«ã¯ïŒã€ä»¥äžã®ãããã¯ã«é 眮ãããŸãã
åŒçšå : https://web.stanford.edu/class/ee398a/handouts/lectures/EE398a_MotionEstimation_2012.pdf
jupyterã䜿ã£ãŠãããã®æŠå¿µãå®éšã§ããŸãã
ãã³ãºãªã³: åããã¯ãã«ãèŠã
ffmpegã§ã€ã³ã¿ãŒäºæž¬ (åããã¯ãã«)ä»ãã®ãããªãçæããããšãã§ããŸãã
ãŸãã¯ãIntel Video Pro Analyzer (ææã§ãããæåã®10ãã¬ãŒã ã«å¶éãããç¡æã詊ãçããããŸã)ã䜿ãããšãã§ããŸãã
空éçåé·æ§ (ã€ã³ãã©äºæž¬)
ãããªã®äžã®1ã€1ã€ã®ãã¬ãŒã ãåæãããšãããããã®çžé¢æ§ã®ããé åãååšããããšãåãããŸãã
äŸãéããŠã¿ãŠãããŸãããããã®ã·ãŒã³ã¯ã»ãšãã©éãšçœã§æ§æãããŠããŸãã
ãã㯠Iãã¬ãŒã ã§ãäºæž¬ã®ããã«åã®ãã¬ãŒã ã䜿ããŸããããå§çž®ããããšã¯ã§ããŸããèµ€ããããã¯ãéžæããŠãšã³ã³ãŒãããŠã¿ãŸãããã飿¥ããéšåãèŠããšããã®åšãã®è²ã«åŸåãããããšãæšå®ããããšãã§ããŸãã
ãã®ãã¬ãŒã ã§ã¯è²ãåçŽæ¹åã«åºããç¶ããããšãäºæž¬ããŠã¿ãŸããæªç¥ã®ãã¯ã»ã«ã®è²ã飿¥ãããã¯ã»ã«ã®è²ãæã€ããšãæå³ããŸãã
äºæž¬ãééããããããŸããããã®ããããã®ææ³(ã€ã³ãã©äºæž¬)ãé©çšããŠãããå®éã®å€ãåŒããŠå·®åãçæããå¿ èŠããããŸãããã®å·®åã¯äºæž¬åãããããã«å§çž®ãããããããªã¯ã¹ã«ãªããŸãã
ä»ã«ãæ§ã ãªäºæž¬æ¹æ³ããããŸããããã§ç޹ä»ããæ¹æ³ã¯ãçŽç·ç¶ã«äžŠãã é åã®äºæž¬ãè¡ãããããã¯ã®äžã®è¡ã®ãã¯ã»ã«ããããã¯å ã®åè¡ã«ã³ããŒããŠããŸãããããã«ããã«è§åºŠæåãå ããå·Šé£ã®ãã¯ã»ã«ã®å€ãå©çšããŠãããã¯å ã®ãã¯ã»ã«å€ãäºæž¬ããæ¹æ³ããããŸãããŸãå·Šé£ãšäžé£ã®ãã¯ã»ã«å€ã®å¹³åãå©çšãããDCäºæž¬ãšããæ¹æ³ããããŸãã
ãã³ãºãªã³: ã€ã³ãã©äºæž¬ã調ã¹ã
ffmpegã§ãã¯ããããã¯ãšãããã®äºæž¬ä»ãã®ãããªãçæããããšãã§ããŸããããããã®ãããã¯ã®è²ã®æå³ãçè§£ããããã«ffmpegã®ããã¥ã¡ã³ãã調ã¹ãŠãã ããã
ãŸãã¯Intel Video Pro Analyzer (ææã§ãããæåã®10ãã¬ãŒã ã«å¶éãããç¡æã詊ãçããããŸã)ã䜿ãããšãã§ããŸãã
ãããªã³ãŒããã¯ã®ä»çµã¿
What? Why? How?
What? ããžã¿ã«ãããªãå§çž®ãè§£åãããœãããŠã§ã¢ / ããŒããŠã§ã¢ã®éšåãWhy? å¶éããã垯åãšã¹ãã¬ãŒãžã®äžã§ããé«ãå質ã®ãããªãžã®èŠæ±ããåžå Žãšç€ŸäŒã§é«ãŸã£ãŠãããããæ¯ç§30ãã¬ãŒã ããã¯ã»ã«ããã24ããããè§£å床ã480x240ã®ãããªã«å¿ èŠãªåž¯åãèšç®ããã®ãèŠããŠããŸãããå§çž®ãªãã§ã¯82.944 Mbpsã§ããããã¬ããã€ã³ã¿ãŒãããã§HD/FullHD/4Kãé ä¿¡ããããã«ã¯å§çž®ãããããããŸãããHow? ããã§äž»ãªææ³ã«ã€ããŠç°¡åã«èŠãŠãããŸãã
ã³ãŒãã㯠察 ã³ã³ãã
åå¿è ããã誀解ããããšã®ïŒã€ã«ãããžã¿ã«ãããªã³ãŒããã¯ãšããžã¿ã«ãããªã³ã³ãããæ··åãããšãããã®ããããŸããã³ã³ããã¯ãããª(ãšé³å£°ããããã)ã®ã¡ã¿ããŒã¿ãšãã€ããŒãã§ããå§çž®ããããããªãå æ¬ããã©ãããŒãã©ãŒããããšããŠèããããšãã§ããŸãã
ãããŠãããããªãã¡ã€ã«ã®æ¡åŒµåã¯ãã®ãããªã³ã³ãããå®çŸ©ããŸããäŸãã°ããã¡ã€ã«
video.mp4ã¯ãããã MPEG-4 Part 14 ã³ã³ããã§ãvideo.mkvãšããååã®ãã¡ã€ã«ã¯ãããã matroska ã§ããã³ãŒããã¯ãšã³ã³ãããã©ãŒãããã確å®ã«èª¿ã¹ãããã«ã¯ãffmpegãmediainfoã䜿ããŸãã
æŽå²
äžè¬çãªã³ãŒããã¯ã®å éšåäœã«å ¥ã£ãŠè¡ãåã«ãããã€ãã®å€ããããªã³ãŒããã¯ã«ã€ããŠå°ãçè§£ããããã«éå»ãæ¯ãè¿ã£ãŠã¿ãŸãããã
ãããªã³ãŒããã¯ã§ããH.261ã¯1990幎(å³å¯ã«ã¯1988幎)ã«çãŸããŸãããH.261ã¯64 kbit/sã®ããŒã¿ã¬ãŒãã§åäœããããã«èšèšãããŸãããã¯ãããµããµã³ããªã³ã°ããã¯ããããã¯ãªã©ã®èãããã§ã«äœ¿ã£ãŠããŸããã1995幎ã«ãH.263ãããªã³ãŒããã¯æšæºãçºè¡šãã2001幎ãŸã§æ¡åŒµããç¶ããŸããã
2003幎ã«H.264/AVCã®åçã宿ããŸãããåã幎㫠On2 Technologies (æ§Duck Corporation)ãšããäŒç€Ÿãããã€ã€ãªãã£ãŒããªãŒã§éå¯éãããªå§çž®ã® VP3ãšåŒã°ãããããªã³ãŒããã¯ããªãªãŒã¹ããŸããã2008幎ã«ãã®äŒç€ŸãGoogleãè²·åããåã幎ã«VP8ããªãªãŒã¹ããŸããã2012幎ã®12æã«GoogleãVP9ããªãªãŒã¹ããŸãããVP9ã¯(ã¢ãã€ã«ãå«ã)ãã©ãŠã¶åžå Žã®ãããŸã§ãµããŒããããŠããŸãã
AV1ã¯æ°ãããã€ã€ãªãã£ãŒããªãŒã§ãªãŒãã³ãœãŒã¹ã®ãããªã³ãŒããã¯ã§ãAlliance for Open Media (AOMedia)ã«ãã£ãŠèšèšãããŸãããAOMediaã¯è€æ°ã®äŒç€Ÿ: GoogleãMozillaãMicrosoftãAmazonãNetflixãAMDãARMãNVidiaãIntelãCiscoãšä»ã®ããã€ãã®äŒç€Ÿããæãç«ã£ãŠããŸãããªãã¡ã¬ã³ã¹ã³ãŒããã¯ã®åç 0.1.0ã2016幎4æ7æ¥ã«å ¬éãããŸããã
AV1ã®èªç
2015幎ã®åæã«GoogleãVP10ã®éçºãXiph (Mozilla)ã¯Daalaã®éçºãCiscoã¯ãªãŒãã³ãœãŒã¹ã§ãã€ã€ãªãã£ãŒããªãŒã®ThorãšåŒã°ãããããªã³ãŒããã¯ã®éçºã«åãçµãã§ããŸããã
MPEG LAã¯ãåœåã¯HEVC (H.265)ã®å¹Žéãã€ã€ãªãã£ãŒã®äžéãšH.264ã®8åé«ãã©ã€ã»ã³ã¹æãçºè¡šããŸããããããã«ã«ãŒã«ã倿ŽããŸããã:
- 幎éãã€ã€ãªãã£ãŒã®äžéãªã
- ã³ã³ãã³ãæé (åå ¥ã®0.5%)
- h264ãã10åé«ãåäœãããæé
alliance for open mediaã¯ããŒããŠã§ã¢ã¡ãŒã«ãŒ(IntelãAMDãARMãNvidiaãCisco)ãã³ã³ãã³ãé ä¿¡ (GoogleãNetflixãAmazon)ããã©ãŠã¶éçº(Google, Mozilla)ããã®ä»ã®äŒç€Ÿã«ãã£ãŠäœãããŸããã
ãããã®äŒç€Ÿã«ã¯ãã€ã€ãªãã£ãŒããªãŒã®ãããªã³ãŒããã¯ãšããå ±éã®ç®çããããAV1ã¯ãã ç°¡åãªç¹èš±ã©ã€ã»ã³ã¹ã§èªçããŸãããTimothy B. Terriberryã AV1ã®æŠå¿µãã©ã€ã»ã³ã¹ã¢ãã«ãçŸç¶ã«ã€ããŠã®çŽ æŽããããã¬ãŒã³ããŒã·ã§ã³ãè¡ããŸããããã®ç¯ã¯ãã®ãã¬ãŒã³ããŒã·ã§ã³ãå ã«æžããŠããŸãã
ãã©ãŠã¶ãŒã䜿ã£ãŠAV1ã³ãŒããã¯ãåæã§ããããšãç¥ã£ãŠé©ãããšã§ããããhttps://arewecompressedyet.com/analyzer/ ãèŠãŠãã ããã
远èš: ã³ãŒããã¯ã®æŽå²ã«ã€ããŠãã£ãšåŠã³ãããªããèåŸã«ãããããªå§çž®ã®ç¹èš±ã®åºæ¬ãåŠã°ãªããŠã¯ãªããŸããã
äžè¬çã³ãŒããã¯
äžè¬çãªãããªã³ãŒããã¯ã®èåŸã«ããäž»ãªæ©æ§ã玹ä»ããŠãããŸããããããã®æŠå¿µã®ã»ãšãã©ã¯ VP9ãAV1ãHEVCã®ãããªææ°ã®ã³ãŒããã¯ã§ã圹ã«ç«ã¡ã䜿ãããŠããŸããç©äºãããªãåçŽã«ããŠèª¬æããããšãçè§£ããŠãã ããããšãã©ãå®éã®äŸ(ã ãããã¯H.264)ã䜿ã£ãŠãææ³ã®ãã¢ãè¡ããŸãã
ã¹ãããïŒ - ç»ååå²
æåã®ã¹ãããã¯ãããã€ãã®ããŒãã£ã·ã§ã³ããµãããŒãã£ã·ã§ã³ããã£ãšçްããåäœã«ãã¬ãŒã ãåå²ããããšã§ãã
ããããªã? ããããã®çç±ããããŸããäŸãã°ãç»åãåå²ãããšå°ããªããŒãã£ã·ã§ã³ãåãã®ããå°ããªéšåã«äœ¿ãããã倧ããªããŒãã£ã·ã§ã³ãéçãªèæ¯ã«äœ¿ã£ãŠãäºæž¬ãããæ£ç¢ºã«è¡ãããšãã§ããŸãã
éåžžãã³ãŒããã¯ã¯ãã¹ã©ã€ã¹(ãããã¯ã¿ã€ã«)ããã¯ã(ãããã¯ç¬Šå·ããªãŒãŠããã)ãããããã®ãµãããŒãã£ã·ã§ã³ã§ ããŒãã£ã·ã§ã³ãæ§æããŸãããããã®ããŒãã£ã·ã§ã³ã®æå€§ãµã€ãºã¯æ§ã ã§ãHEVCã§ã¯64x64ãAVC16x16ã§ããããµãããŒãã£ã·ã§ã³ã¯4x4ãŸã§ã§ãã
ãã¬ãŒã ã¯ããã€ãã®åœ¢åŒã«åããããŠããã®ãåŠãã ããšãèŠããŠããŸããïŒïŒããŠããããã®ã¢ã€ãã¢ããããã¯ã«é©çšããããšãã§ããŸããã€ãŸãIã¹ã©ã€ã¹ãBã¹ã©ã€ã¹ãIãã¯ããããã¯ãªã©ãæã€ããšãã§ããŸãã
ãã³ãºãªã³: ããŒãã£ã·ã§ã³ã調ã¹ã
Intel Video Pro Analyzer (ææã§ãããæåã®10ãã¬ãŒã ã«å¶éãããç¡æã詊ãçããããŸã)ã䜿ãããšãã§ããŸãããããåæãããVP9ããŒãã£ã·ã§ã³ã§ãã
ã¹ãããïŒ - äºæž¬
ããŒãã£ã·ã§ã³ã«åå²ãããšããããã«ã€ããŠäºæž¬ãè¡ãããšãã§ããŸããã€ã³ã¿ãŒäºæž¬ã®ããã«ãåããã¯ãã«ãšå·®åãéä¿¡ããå¿ èŠãããããŸãã€ã³ãã©äºæž¬ã®ããã«ãäºæž¬æ¹åãšå·®åãéä¿¡ããå¿ èŠããããŸãã
ã¹ãããïŒ - 倿
å·®åããã㯠(äºæž¬ããŒãã£ã·ã§ã³ - å®éã®ããŒãã£ã·ã§ã³)ãçæããåŸãããã倿ããããšã§ç»è³ªãããçšåºŠä¿ã£ããŸãŸãã©ã®ãã¯ã»ã«ãæšãŠãããããåããããã«ãªããŸããããã«ã¯ããã€ãã®å€æãååšããŸãã
ä»ã®å€æããããŸããã颿£ã³ãµã€ã³å€æ(DCT)ããã£ããèŠãŠãããŸããDCTã®äž»ãªç¹åŸŽã¯:
- ãã¯ã»ã«ãããã¯ãåããµã€ãºã®åšæ³¢æ°ä¿æ°ãããã¯ã«å€æããã
- ãšãã«ã®ãŒãåãããŠã空éçåé·æ§ãåæžããããããã
- å ã«æ»ããããŸãã¯ãã¯ã»ã«ã«æ»ãã
2017幎2æ2æ¥ã«Cintra, R. J.ãšBayer, F. Mã14å ç®ã®ã¿ã®ç»åå§çž®çšDCTè¿äŒŒå€æãšããè«æãçºè¡šããŸããã
äžèšã®ç®æ¡æžãã®å©ç¹ãå šãŠçè§£ããªãã£ããšããŠãå¿é ãããŸããããã®æ¬åœã®äŸ¡å€ãèŠãåºãããã«ããã€ãã®å®éšã詊ã¿ãŸãã
次ã®ãã¯ã»ã«ã®ãããã¯(8x8)ãäŸã«ãšããŸããã:
ããã¯ãããã¯ç»å(8x8)ãæç»ããŸã:
ãã®ãã¯ã»ã«ã®ãããã¯ã«DCTãé©çšãããšä¿æ°ã®ããã㯠(8x8)ãåŸãŸã:
ãã®ä¿æ°ã®ãããã¯ãæç»ããã°ã次ã®ç»åãåŸãããã§ããã:
å ã®ç»åãšã¯äŒŒãŠã䌌ã€ããªãããšãåãããæåã®ä¿æ°ã¯ä»ã®ä¿æ°ãšã¯å€§ããç°ãªã£ãŠããããšã«ãæ°ã¥ããããããŸããããã®æåã®ä¿æ°ã¯DCä¿æ°ãšããŠç¥ãããå ¥åé åã®ãµã³ãã«å šäœã衚ããŸããå¹³åã«äŒŒãäœãã§ãã
ãã®ä¿æ°ã®ãããã¯ã¯é«åšæ³¢æ°æåãäœåšæ³¢æ°æåããåãé¢ããšããé¢çœãç¹æ§ãæã£ãŠããŸãã
ç»åã§ã¯ããšãã«ã®ãŒã®ã»ãšãã©ã¯äœåšæ³¢ã«éäžãããŸããããã§ç»åãåšæ³¢æ°æåã«å€æããŠé«åšæ³¢æ°ä¿æ°ãæšãŠãã°ãç»è³ªãããã»ã©ç ç²ã«ããã«ç»åã衚çŸããã®ã«å¿ èŠãªããŒã¿éãåæžã§ããŸãã
åšæ³¢æ°ã¯ä¿¡å·ãã©ãã ãéãå€åããããæå³ããŸãã
ã§ã¯åŸãããç¥èã䜿ã£ãŠãå ã®ç»åãDCTã䜿ã£ãŠåšæ³¢æ°(ä¿æ°ã®ãããã¯)ã«å€æããŠããã£ãšãéèŠã§ãªãä¿æ°ã®éšåãæšãŠãå®éšãããŠã¿ãŸãããã
ãŸããç»åãåšæ³¢æ°é åã«å€æããŸãã
次ã«ãä¿æ°ã®äžéš(67%)ãæšãŠãŸããæšãŠãã®ã¯ã»ãšãã©ã¯å³äžã®éšåã§ãã
æåŸã«ããã®äžéšãæšãŠãããä¿æ°ã®ãããã¯ããç»åãåçæã(å ã«æ»ããå¿ èŠãããããšãèŠããŠãããŠãã ãã)ãå ã®ç»åãšæ¯èŒããŸãã
ãã®ç»åã¯å ã®ç»åãšäŒŒãŠããŸãããå€ãã®çžéç¹ãçºçããŠããŸãã67.1875%ãæšãŠãŸãããã å°ãªããšãå ã®ç»åã«äŒŒãŠããç»åãåŸãããšãã§ããŸãããããè³¢ãæ¹æ³ã§ä¿æ°ãæšãŠãŠããã£ãšç»è³ªãè¯ãããããšãã§ããã®ã§ãããããã¯æ¬¡ã®ãããã¯ã§æ±ããŸãã
ããããã®ä¿æ°ã¯ç»çŽ å šäœã䜿ã£ãŠåœ¢æããã
ããããã®ä¿æ°ã¯ãïŒã€ã®ç»çŽ ã«çŽæ¥ãããã³ã°ããŠããããã§ã¯ãªããç»çŽ å šäœã®éã¿ä»ãåèšã§ããããšã«çæããããšã¯éèŠã§ããäžèšã®çŽ æŽãããã°ã©ãã¯ã1çªç®ãš2çªç®ã®ä¿æ°ããããããã®ã€ã³ããã¯ã¹ã§ç°ãªãéã¿ã䜿ã£ãŠãã©ã®ããã«èšç®ããããã瀺ããŠããŸãã
DCTåºåºããšã®åçŽãªç»åã®åœ¢æãèŠãŠDCTãèŠèŠåããããšãã§ããŸããäŸãã°ãäžèšã¯ããããã®ä¿æ°ã®éã¿ã䜿ã£ãŠïŒã€ã®æåã圢æãããŠããéçšã§ãã
ãã³ãºãªã³: çš®ã ã®ä¿æ°ãæšãŠã
DCT倿ãå®éšããŸãããã
ã¹ãããïŒ - éåå
åã®ã¹ããã (倿)ã§ä¿æ°ãããã€ãæšãŠããšãã«ãéååã®ãããªãã®ãè¡ããŸããããã®ã¹ãããã§ã¯ãæšãŠãæ å ±(æå€±éšå)ãéžã³ãŸããåçŽãªèšèã§ãããšãå§çž®ãæãéããããã«ä¿æ°ãéååããŸãã
ã©ã®ããã«ä¿æ°ã®ãããã¯ãéååã§ããã§ããããïŒïŒã€ã®åçŽãªæ¹æ³ã¯ãåäžéååã§ãããããããã¯ãåäžå€ (10) ã§å²ããå°æ°ç¹ãåãæšãŠãŸãã
ã©ã®ããã«ãã®ä¿æ°ã®ãããã¯ãå ã«æ»ãã(åéåå)ã§ããããïŒåãå€ (10)ãæããããšã«ããæ»ãããšãã§ããŸãã
ãã®ããæ¹ã¯æé©ãªæ¹æ³ã§ã¯ãããŸãããããããã®ä¿æ°ã®éèŠåºŠãèæ ®ããŠããªãããã§ãã åäžå€ã®ä»£ããã«éååãããªã¯ã¹ã䜿ãããšãã§ããŸãããã®ãããªã¯ã¹ã§DCTã®ç¹æ§ã掻ããããšãã§ããŸããå³äžãäžçªéååããŠãå·Šäžã¯ããŸãéååããŸãããJPEGã¯äŒŒãããæ¹ã䜿ã£ãŠããŸãããœãŒã¹ã³ãŒãäžã§ãã®ãããªã¯ã¹ãèŠãããšãã§ããŸãã
ãã³ãºãªã³: éåå
éååãå®éšããŸãããã
ã¹ãããïŒ - ãšã³ããããŒç¬Šå·å
ããŒã¿(ç»å ãããã¯/ã¹ã©ã€ã¹/ãã¬ãŒã )ãéååããåŸãããã«å¯éå§çž®ããããšãã§ããŸããããŒã¿å§çž®ã®ããã®ããããã®æ¹æ³(ã¢ã«ãŽãªãºã )ãååšããŸãããããã®ããã€ããç°¡åã«äœéšããŠãããŸããããæ·±ãçè§£ã®ããã«ã¯ããã®çŽ æŽãããæ¬Understanding Compression: Data Compression for Modern Developersãèªããšããã§ãããã
å¯å€é·ç¬Šå·:
èšå·ã®ã¹ããªãŒã ãæã£ãŠãããšããŸã: aãeãrãtãšãããã®ç¢ºç(0ãã1)ããã®ããŒãã«ã§è¡šãããŠããŸãã
| a | e | r | t | |
|---|---|---|---|---|
| 確ç | 0.3 | 0.3 | 0.2 | 0.2 |
ãã£ãšã確çãé«ããã®ã«ã¯(ããå°ããª)ãŠããŒã¯ãªãã€ããªã³ãŒããããã£ãšã確çãäœããã®ã«ã¯ãã倧ããªãã€ããªã³ãŒããå²ãåœãŠãããšãã§ããŸãã
| a | e | r | t | |
|---|---|---|---|---|
| probability | 0.3 | 0.3 | 0.2 | 0.2 |
| binary code | 0 | 10 | 110 | 1110 |
ã¹ããªãŒã eatãå§çž®ããŠã¿ãŸããããããããã®èšå·ã«8ããã䜿ããšãå§çž®ãªãã§24ããã䜿ãããšã«ãªããŸããããããããããã®èšå·ããã®ã³ãŒãã§çœ®ãæãããšãã¹ããŒã¹ãç¯çŽã§ããŸãã
ãŸãèšå·eã笊å·åããŠ10ã«ãªããŸããïŒã€ç®ã®èšå·aã笊å·åãããšãè¶³ãããŠ(ç®æ°ã®æ¹æ³ã§ã¯ãªã) [10][0]ãšãªããŸããæåŸã«ïŒã€ç®ã®èšå·tã笊å·åãããšãæçµçãªå§çž®ããããããã¹ããªãŒã 㯠[10][0][1110]ãããã¯1001110ãšãªãã(ããšãã3.4åå°ããªã¹ããŒã¹ã§ãã)7ããããã䜿ããŸããã
ããããã®ã³ãŒãã¯ãŠããŒã¯ãªæ¥é 笊å·ãæã€å¿ èŠãããããšã«æ³šæããŠãã ãã ãããã³ããããã®æ°åãèŠã€ããããšãå©ããŠãããŸããããã€ãã®åé¡ããããŸããããã®æ¹æ³ã¯ããã€ãã®ãããªã³ãŒããã¯ã§ãŸã ãµããŒãããŠããŸããããã¯å§çž®ãå¿ èŠãšããå€ãã®ã¢ããªã±ãŒã·ã§ã³ã«æçšãªã¢ã«ãŽãªãºã ã§ãã
ãšã³ã³ãŒããŒãšãã³ãŒããŒã®äž¡æ¹ããã®ã³ãŒãã®èšå·ããŒãã«ãç¥ããªããŠã¯ãããŸããããã®ããããŒãã«ãéä¿¡ããå¿ èŠããããŸãã
ç®è¡ç¬Šå·:
èšå·: a, e, r, s, t ã®ã¹ããªãŒã ãæã£ãŠããŠããããã®ç¢ºçããã®è¡šã«ãã£ãŠè¡šããããšä»®å®ããŸãããã
| a | e | r | s | t | |
|---|---|---|---|---|---|
| probability | 0.3 | 0.3 | 0.15 | 0.05 | 0.2 |
ãã®è¡šãèæ ®ã«å ¥ããŠãåºçŸé ã«ãœãŒããããå šãŠã®å¯èœãªèšå·ãå«ãç¯å²ã°ã©ããäœããŸãã
ããŠãã¹ããªãŒã eatã笊å·åããŠã¿ãŸããããæåã®èšå·eãåãäžããŸããããã¯0.3以äž0.6æªæºã«äœçœ®ããŠããŸãããã®éšåç¯å²ãåãäžãããããåã³åãå²åã§åå²ããŸãã
ã¹ããªãŒã eatã®ç¬Šå·åãç¶ããŸããããæ¬¡ã«èšå·aãåãäžããŸããããã¯0.3以äž0.39æªæºã«äœçœ®ããŠããŸãããããŠãæåŸã®èšå· tãåãäžããŸããããäžåºŠåãåŠçãè¡ããš0.354以äž0.372æªæºãšããæçµçãªç¯å²ãåŸãŸãã
æçµç¯å²0.354以äž0.372æªæºããïŒã€ã®æ°å€ãåãäžããå¿
èŠããããŸãã0.36ãåãäžããŸããããããããã®éšåç¯å²å
ãªãã©ããªæ°å€ãéžãã§ãããŸããŸããããã®æ°å€ã ãã§ãå
ã®ã¹ããªãŒã eatã埩å
ããããšãã§ããŸããããã¯ãã¹ããªãŒã ã笊å·åããçºã«ç¯å²ã®ç¯å²ã«ç·ãåŒããã®ããã«æããããšãã§ããŸãã

ééçš (å¥åã埩å·å) ã¯åæ§ã«ç°¡åã§ãæ°å€0.36ãšå ã®ç¯å²ã䜿ã£ãŠãåãåŠçãè¡ãããã®æ°å€ãã笊å·åãããã¹ããªãŒã ãæããã«ããŸãã
æåã®ç¯å²ã§ããã®æ°å€ãïŒã€ã®éšåã«äžèŽãããããæåã®èšå·ã§ããããšã«æ°ã¥ããŸããããããããã®éšåç¯å²ã以åè¡ã£ãããã«ãŸãåå²ããŸãããããš0.36ãèšå·aã«åãããšãããããåãåŠçãç¹°ãè¿ããšãæåŸã®èšå·ã§ããtãèŠã€ããŸã(笊å·åã®ã¹ããªãŒã eatã圢æããŸã)ã
笊å·åãšåŸ©å·åã®äž¡æ¹ã¯ãèšå·ç¢ºçããŒãã«ãç¥ãå¿ èŠããããŸããããã§ããŒãã«ãéä¿¡ããå¿ èŠããããŸãã
çŽ æŽãããã§ãããã人ã ã¯æ¬åœã«è³¢ãããã®ãããªè§£æ±ºçãçã¿åºããŸãããããã€ãã®ãããªã³ãŒããã¯ã¯ãã®ææ³ã䜿ã£ãŠããŸãã(ãããã¯å°ãªããšããªãã·ã§ã³ãšããŠæäŸããŠããŸã)ã
ãã®èãã¯ãéååãããã¹ããªãŒã ãå¯éå§çž®ããçºã®ãã®ã§ããééããªããã®èšäºã§ã¯äŒããããŠããªã詳现ãçç±ããã¬ãŒããªãçãå±±ã®ããã«ãããŸããããããèªè ã¯ããããããŒãšããŠãã£ãšåŠã¶ã¹ãã§ããããæ°ããã³ãŒããã¯ã¯å¥ã®ANSã®ãããªãšã³ããããŒç¬Šå·åã¢ã«ãŽãªãºã ã䜿ãããšããŠããŸãã
ãã³ãºãªã³: CABAC察CAVLC
ïŒã€ã¯CABACãããäžæ¹ã¯CAVLCã䜿ã£ãŠïŒã€ã®ã¹ããªãŒã ãçæããçæããçºã«ãããæéãšæçµçãªãµã€ãºãæ¯èŒããŠã¿ãŸãããã
ã¹ãããïŒ - ãããã¹ããªãŒã ãã©ãŒããã
ãããã®ã¹ãããå šãŠãè¡ã£ãåŸãå§çž®ããããã¬ãŒã ãšãããã®ã¹ããããŸã§ã®ã³ã³ããã¹ããäžã€ã«ãŸãšããå¿ èŠããããŸãã ãšã³ã³ãŒãã«ãã£ãŠãªãããæ±ºå®ããã³ãŒããžæç€ºçã«ç¥ãããå¿ èŠããããŸãããããæ·±åºŠãè²ç©ºéãè§£å床ãäºæž¬æ å ±ïŒåããã¯ãã«ãã€ã³ãã©äºæž¬æ¹åïŒããããã¡ã€ã«ã¬ãã«ããã¬ãŒã ã¬ãŒãããã¬ãŒã ã¿ã€ãããã¬ãŒã æ°ããã®ä»å€æ°ã§ãã
H.264ãããã¹ããªãŒã ã«ã€ããŠè¡šé¢çã«åŠãã§ãããŸããæåã®ã¹ãããã¯æå°éã®H.264 *ãããã¹ããªãŒã ãçæããããšã§ãããã®ã¬ããžããªãšffmpegã䜿ã£ãŠããããã§ããŸãã
./s/ffmpeg -i /files/i/minimal.png -pix_fmt yuv420p /files/v/minimal_yuv420.h264
* ffmpegã¯ãããã©ã«ãã§SEI NALãšããŠç¬Šå·åãããå šãã©ã¡ãŒã¿ãå ããŸããNALãäœã§ãããã¯åŸã»ã©å®çŸ©ããŸãã
ãã®ã³ãã³ãã¯ãåäžãã¬ãŒã ã64x64ãè²ç©ºéãyuv420ãæ¬¡ã®ç»åããã¬ãŒã ãšããŠäœ¿ã£ãŠããçã®h264ãããã¹ããªãŒã ãçæããŸãã
H.264ãããã¹ããªãŒã
AVC (H.264)æšæºã¯ãæ å ±ã NAL (Network Abstraction Layer) ãšåŒã°ãã ãã¯ããã¬ãŒã (ãããã¯ãŒã¯çã«ã¯)ã§éä¿¡ãããããšãå®çŸ©ããŠããŸããNALã®äž»ãªç®çã¯ã"ãããã¯ãŒã¯ãã¬ã³ããªãŒ"ãªãããªè¡šçŸãæäŸããããšã§ãããã®æšæºã¯ãTV (ã¹ããªãŒã ããŒã¹)ãã€ã³ã¿ãŒããã(ãã±ããããŒã¹)ããã®ä»ã§åäœããªããã°ãªããŸããã
NALãŠãããã®å¢çãå®çŸ©ãã åæããŒã«ãŒããããŸããããããã®åæããŒã«ãŒã¯ãæåã¯0x00 0x00 0x00 0x01ã§ããã以éã¯0x00 0x00 0x01ã®å€ãæã¡ãŸããããçæãããh264ãããã¹ããªãŒã äžã§16é²ãã³ããè¡ãã°ããã¡ã€ã«ã®æåã®æ¹ã«ãå°ãªããšãïŒã€ã®NALãèŠã€ããããšãã§ããŸãã
å ã«è¿°ã¹ããšããããã³ãŒãã¯ç»åããŒã¿ã ãã§ã¯ãªããåç»ããã¬ãŒã ãè²ã䜿çšããããã©ã¡ãŒã¿ããã®ä»ã®è©³çްãç¥ãå¿ èŠããããŸããããããã®NALã®æåã®ãã€ãã¯ããã®ã«ããŽãªãšã¿ã€ããå®çŸ©ããŸãã.
| NAL ã¿ã€ãID | 説æ |
|---|---|
| 0 | æªå®çŸ© |
| 1 | éIDRãã¯ãã£ã®ç¬Šå·åã¹ã©ã€ã¹ |
| 2 | 笊å·åã¹ã©ã€ã¹ããŒã¿ããŒãã£ã·ã§ã³ A |
| 3 | 笊å·åã¹ã©ã€ã¹ããŒã¿ããŒãã£ã·ã§ã³ B |
| 4 | 笊å·åã¹ã©ã€ã¹ããŒã¿ããŒãã£ã·ã§ã³ C |
| 5 | IDRãã¯ãã£ã®IDR笊å·åã¹ã©ã€ã¹ |
| 6 | SEI ä»å æ¡åŒµæ å ± |
| 7 | SPS ã·ãŒã±ã³ã¹ãã©ã¡ãŒã¿ã»ãã |
| 8 | PPS ãã¯ãã£ãã©ã¡ãŒã¿ã»ãã |
| 9 | ã¢ã¯ã»ã¹ãŠãããããªãã¿ãŒ |
| 10 | ã·ãŒã±ã³ã¹ã®æåŸ |
| 11 | ã¹ããªãŒã ã®æåŸ |
| ... | ... |
éåžžããããã¹ããªãŒã ã®æåã®NALã¯SPSã§ãããã®NALã®çš®é¡ã¯ããããã¡ã€ã«ãã¬ãã«ãè§£å床ããã®ä»ã®æ±çšãšã³ã³ãŒãã£ã³ã°å€æ°ãç¥ããã圹å²ãæã¡ãŸãã
æåã®åæããŒã«ãŒãé£ã°ããšãæåã®ãã€ãã埩å·åããŠNALã®ã¿ã€ããäœããç¥ãããšãã§ããŸãã
äŸãã°ãåæããŒã«ãŒã®æåã®ãã€ãã¯01100111ã§ããæåã®ããã (0)ã¯forbidden_zero_bitãã£ãŒã«ãã§ã次ã®2ããã(11)ã¯nal_ref_idcãã£ãŒã«ãã§ããã®NALãåç
§ãã£ãŒã«ããã©ããã瀺ããŸããæ®ãã®5ããã (00111)ã¯nal_unit_typeãã£ãŒã«ãã§ããã®äŸã§ã¯SPS (7) NALãŠãããã§ãã
SPS NALã®ïŒãã€ãç®(ïŒé²æ°=01100100ãïŒïŒé²æ°=0x64ãïŒïŒé²æ°=100)ã¯profile_idcãã£ãŒã«ãã§ããšã³ã³ãŒãã䜿ã£ããããã¡ã€ã«ã瀺ããŸãããã®äŸã§ã¯ã å¶çŽä»ããã€ãããã¡ã€ã« ã䜿ã£ãŠããŸããããã¯B (åæ¹åäºæž¬)ã¹ã©ã€ã¹ããµããŒãããªããã€ãããã¡ã€ã«ã§ãã
SPS NALã«ã€ããŠH.264ãããã¹ããªãŒã 仿§ãèªããšããã©ã¡ãŒã¿åãã«ããŽãªã説æã®è¡šã«å€ãã®å€ãèŠã€ããã§ããããäŸãã°ãpic_width_in_mbs_minus_1ãšpic_height_in_map_units_minus_1ãã£ãŒã«ãã«ã€ããŠèŠãŠã¿ãŸãããã
| ãã©ã¡ãŒã¿å | ã«ããŽãª | 説æ |
|---|---|---|
| pic_width_in_mbs_minus_1 | 0 | ue(v) |
| pic_height_in_map_units_minus_1 | 0 | ue(v) |
ue(v): 笊å·ãªãæŽæ° Exp-Golomb-coded
ãããã®ãã£ãŒã«ãã®å€ã«å¯ŸããŠããèšç®ããããšãè§£å床ãåŸãããšãã§ããŸãã1920 x 1080ãpic_width_in_mbs_minus_1ã119 ( (119 + 1) * macroblock_size = 120 * 16 = 1920) ãšããŠè¡šçŸããããšãã§ããŸãã空éãããã«ç¯çŽããããã«ã1920ã笊å·åãã代ããã«ã119ã䜿ã£ãŠããŸãã
çæããããããªããã€ããªãã¥ãŒ (äŸãã°: xxd -b -c 11 v/minimal_yuv420.h264)ã§æ€æ»ãç¶ãããšãæåŸã®NALãŸã§é£ã°ãããšãã§ããŸããããã¯ãã¬ãŒã èªäœã§ãã
æåã®ïŒãã€ãã®å€ãèŠãŸããã: 01100101 10001000 10000100 00000000 00100001 11111111ããã§ã«ç¥ã£ãŠãéããæåã®ãã€ãã§NALãäœããç¥ãããšãã§ããŸãããã®äŸã§ã¯ã(00101)ã§ IDRã¹ã©ã€ã¹ (5) ã§ããããã«æ€æ»ããŠã¿ãŸã:
仿§ã®æ å ±ã䜿ããã¹ã©ã€ã¹ã®ã¿ã€ã (slice_type)ããã¬ãŒã çªå·(frame_num)ãä»ã®éèŠãªãã£ãŒã«ãã埩å·ããããšãã§ããŸãã
ããã€ãã®ãã£ãŒã«ãã®å€ãåŸãããã«(ue(v)ãme(v)ãse(v)ãte(v))ããããExponential-GolombãšåŒã°ããç¹å¥ãªãã³ãŒããŒã䜿ã£ãŠããã³ãŒãããå¿
èŠããããŸãããã®æ¹æ³ã¯ãããã©ã«ãå€ãå€ãã±ãŒã¹ã§ã¯ãããŠãã倿°å€ã笊å·åããã®ã«ãšãŠãå¹ççã§ãã
ãã®ãããªã®slice_typeãšframe_numã®å€ã¯7 (Iã¹ã©ã€ã¹)ãš0 (æåã®ãã¬ãŒã )ã§ãã
ãããã¹ããªãŒã ããããã³ã«ãšããŠèŠãããšãã§ããŸãããã®ãããã¹ããªãŒã ã«ã€ããŠãã£ãšåŠã³ããããããã¯åŠã¶å¿ èŠããããªããITU H.264 spec.ãåç §ããŠãã ãããäžèšã¯ãã¯ãå³è¡šã§ããã¯ãã£ããŒã¿(å§çž®YUV)ãã©ãã«äœçœ®ãããã瀺ããŠããŸãã
VP9ãããã¹ããªãŒã ãH.265 (HEVC)ããããã«ã¯æ°ãããã¹ããã¬ãã§ãã AV1 ãããã¹ããªãŒã ã®ãããã¹ããªãŒã ãæ¢çŽ¢ããããšãã§ããŸãããããã¯ã¿ããªäŒŒãŠãŸããïŒããããããã1ã€ãåŠã¶ãšãä»ã¯ç°¡åã«çè§£ã§ããŸãã
ãã³ãºãªã³: H.264ãããã¹ããªãŒã ã調ã¹ã
åäžãã¬ãŒã ã®ãããªãçæããmediainfoã䜿ã£ãŠH.264ãããã¹ããªãŒã ãæ€æ»ããŠã¿ãŸããããå®éãh264 (AVC)ãããã¹ããªãŒã ãããŒã¹ãããœãŒã¹ã³ãŒããèŠãããšãã§ããŸãã
Intel Video Pro Analyzerã䜿ãããšãã§ããŸããææã§ãããæåã®10ãã¬ãŒã ã«å¶éãããç¡æã詊ãçããããåŠç¿ç®çãšããŠã¯åé¡ãããŸããã
ãããã
å€ãã®çŸä»£ã®ã³ãŒããã¯ãããããŸã§åŠãã§ããåãã¢ãã«ã䜿ã£ãŠããããšã«æ°ã¥ãã§ããããå®éã®ãããªã³ãŒããã¯ã®ãããã¯å³ãã¿ãŠã¿ãŸããããããã¯åŠãã§ããå šãŠã®ã¹ããããå«ãã§ããŸããå°ãªããšãã³ãŒããã¯é¢é£ã®çºæãæç®ã«ã€ããŠããçè§£ããããšãã§ããããã«ãªã£ãããšã«ãªããŸãã
ãŸã720pè§£å床ã§30fpsã§1æéã®ãããªãã¡ã€ã«ãä¿åããã®ã«139GBã®ã¹ãã¬ãŒãžãå¿ èŠã«ãªãããšãèšç®ããŸãããããã§åŠãã ææ³ã€ãŸãã€ã³ã¿ãŒäºæž¬ãã€ã³ãã©äºæž¬ãå€åœ¢ãéååããšã³ããããŒç¬Šå·åããã®ä»ãé§äœ¿ããŠããã¯ã»ã«ããã0.031ãããã§è¡šçŸã§ãããšä»®å®ãããšã139GBã«å¯Ÿããã£ã367.82MBã ãã§åãç¥èŠç»è³ªã®ãããªãä¿åã§ããŸãã
ä»å䜿çšãããããªãå ã«ãã¯ã»ã«ããã0.031ããããå¿ èŠã«ãªãããšãå°ããŸããã
ã©ã®ããã«H.265ã¯H.264ãããè¯ãå§çž®çãå®çŸããŠããã®ã?
ä»ãã³ãŒããã¯ã®ä»çµã¿ã«ã€ããŠããçè§£ããŠããŸãããã®ãããæ°ããã³ãŒããã¯ãããé«ãè§£å床ãããå°ãªããããã§ã©ã®ããã«é ä¿¡ã§ããã®ãç°¡åã«çè§£ã§ããŸãã
AVCãšHEVCãæ¯èŒããŠã¿ãŸããããããå€ãã®CPUãµã€ã¯ã«(è€éã)ãšå§çž®çã¯ãã»ãšãã©ãã€ã§ããã¬ãŒããªãã§ããããšãå¿ã«æ¢ããŠãããŸãããã
HEVCã¯AVCã«æ¯ã¹ãŠããã倧ãããããå€ãã®ããŒãã£ã·ã§ã³ (ãš ãµãããŒãã£ã·ã§ã³)ã®ãªãã·ã§ã³ãæã£ãŠããŸãããããŠããå€ãã®æ¹åæ§ã€ã³ãã©äºæž¬ãè§åºŠã€ã³ãã©äºæž¬ãæ¹åããããšã³ããããŒç¬Šå·åããã®ä»ãæã£ãŠããŸãããããå šãŠã®æ¹è¯ã®ãããã§ãH.265ã¯H.264ã«æ¯ã¹ãŠ50%以äžã®å§çž®ãããããšãã§ããã®ã§ãã
ãªã³ã©ã€ã³ã¹ããªãŒãã³ã°
äžè¬çãªã¢ãŒããã¯ãã£
[TODO]
ããã°ã¬ãã·ãããŠã³ããŒããšã¢ãããã£ãã¹ããªãŒãã³ã°
[TODO]
ã³ã³ãã³ãä¿è·
åçŽãªããŒã¯ã³ã·ã¹ãã ã䜿ã£ãŠã³ã³ãã³ããä¿è·ããããšãã§ããŸããããŒã¯ã³ãæã£ãŠããªããŠãŒã¶ãŒã¯ãããªããªã¯ãšã¹ãããããšããŠããCDNãçŠæ¢ããŸããäžæ¹æå¹ãªããŒã¯ã³ãæã€ãŠãŒã¶ãŒã¯ãã®ã³ã³ãã³ããåçããããšãã§ããŸããããã¯ãããŠãã®ãŠã§ãèªèšŒã·ã¹ãã ãšã»ãšãã©åãããã«åäœããŸãã
ãã®ããŒã¯ã³ã·ã¹ãã ã®äžäººã®ãŠãŒã¶ãŒãããããŠãŒã¶ãŒã«ãããªãããŠã³ããŒããããŠããããé åžãããããšãã§ããŸããDRM (ããžã¿ã«èäœæš©ç®¡ç) ã·ã¹ãã ã䜿ã£ãŠãããé¿ããããšãã§ããŸãã
å®éã®è£œåã·ã¹ãã ã§ã人ã ã¯ãã°ãã°ãããäž¡æ¹ã®æè¡ã䜿ã£ãŠãèªå¯ãšèªèšŒãæäŸããŸãã
DRM
ã¡ã€ã³ã·ã¹ãã
- FPS - FairPlay Streaming
- PR - PlayReady
- WV - Widevine
What?
DRMã¯Digital rights management(ããžã¿ã«èäœæš©ç®¡ç)ãæå³ããŸããããã¯ããããªããªãŒãã£ãªãªã©ã®ããžã¿ã«ã¡ãã£ã¢ã«èäœæš©ä¿è·ãæäŸããæ¹æ³ã§ããå€ãã®å Žæã§äœ¿ãããŠããŸãããåºãã¯åãå ¥ããããŠããŸããã
Why?
ã³ã³ãã³ã補äœè (ãããŠãã¯ã¹ã¿ãžãª)ã¯ãããžã¿ã«ã¡ãã£ã¢ã®äžæ£ãªåé åžãé²ãããã«ã ç¥ç財ç£ãè€è£œãããããšããå®ãããããã§ãã
How?
DRMã®æœè±¡çã§äžè¬çãªåœ¢åŒãããšãŠãåçŽãªæ¹æ³ã§èª¬æããŠãããŸãã
ã³ã³ãã³ãC1 (äŸãã° hlsãdashãããªã¹ããªãŒãã³ã°)ãšãã¬ã€ã€ãŒP1 (äŸãã° shaka-clapprãexo-playerãios)ãããã€ã¹D1 (äŸãã° ã¹ããŒããã©ã³ããã¬ããã¿ãã¬ããããã¹ã¯ããã/ããŒãããã¯)äžã«ãããDRMã·ã¹ãã DRM1 (widevineãplayreadyãFairPlayãªã©)ã䜿ã£ãŠãããšããŸãããã
ã³ã³ãã³ãC1ã¯ãã·ã¹ãã DRM1ããã®å¯Ÿç§°éµK1ã§æå·åãããæå·åã³ã³ãã³ãC'1ãçæããŸãã
ããã€ã¹D1ã®ãã¬ã€ã€ãŒP1ã¯ïŒã€ã®(é察称)éµãç§å¯éµPRK1 (ãã®éµã¯ä¿è·ãã1D1ã«ããç¥ãããŠããªã)ãšå ¬ééµPUK1ãæã£ãŠããŸãã
1ä¿è·ããã: ãã®ä¿è·ã¯ãããŒããŠã§ã¢ãä»ããŠãªãããŸããäŸãã°ããã®éµã¯ãç¹å¥ãª(èªã¿åãå°çš)ãããã®äžã«ä¿åãããŸããããã¯ã埩å·ãæäŸãããã©ãã¯ããã¯ã¹ã®ããã«åããŸãããããã¯(ããŸãå®å šã§ãªã)ãœãããŠã§ã¢ã«ãããªãããŸããDRM ã·ã¹ãã ã¯ãäžããããããã€ã¹ãã©ã®ã¿ã€ãã®ä¿è·ãæã£ãŠããããç¥ãæ¹æ³ãæäŸããŸãã
ãã¬ã€ã€ãŒP1ãã³ã³ãã³ãC'1ãåçããããšããDRMã·ã¹ãã DRM1ã䜿ãå¿ èŠãããããŸãå ¬ééµPUK1ãäžããŸããDRMã·ã¹ãã DRM1㯠ã¯ã©ã€ã¢ã³ãã®å ¬ééµPUK1ã§æå·åãããéµK1ãè¿ããŸããçè«äžããã®ã¬ã¹ãã³ã¹ã¯D1ã ãã埩å·å¯èœã§ãã
K1P1D1 = enc(K1, PUK1)
P1ã¯ãDRMããŒã«ã«ã·ã¹ãã (ããã¯ç¹å¥ãªããŒããŠã§ã¢ããœãããŠã§ã¢ã§ããSOCããªããã)ã䜿ããŸãããã®ã·ã¹ãã ã¯ãç§å¯éµPRK1ã䜿ã£ãŠãã³ã³ãã³ãã埩å·ããããšãã§ããŸããK1P1D1ããã®å¯Ÿç§°éµK1ã埩å·åããŠãC'1ãåçããããšãã§ããŸããéµãRAMäžã§å€ã«ãããããªãã®ããã¹ãã§ãã
K1 = dec(K1P1D1, PRK1)
P1.play(dec(C'1, K1))
jupyterã®äœ¿ãæ¹
dockerãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠã./s/start_jupyter.shãå®è¡ããã¿ãŒããã«äžã®æç€ºã«åŸã£ãŠãã ããã
ã«ã³ãã¡ã¬ã³ã¹
- DEMUXED - æåŸã®ïŒã€ã®ã€ãã³ããã¬ãŒã³ããŒã·ã§ã³ããã§ãã¯ããããšãã§ããŸãã
åèæç®
ããã«æé«ã®ã³ã³ãã³ãããããŸãããã®ããã¹ãã§èŠãããå šãŠã¯ãããããæœåºãããããå ã«ãªã£ãŠããããäœã圱é¿ãåããŠããŸãããã®é©ãã¹ããªã³ã¯ãæ¬ãåç»ãªã©ã§ãç¥èãããæ·±ãããããšãã§ããŸãã
ãªã³ã©ã€ã³ã³ãŒã¹ãšãã¥ãŒããªã¢ã«:
- https://www.coursera.org/learn/digital/
- https://people.xiph.org/~tterribe/pubs/lca2012/auckland/intro_to_video1.pdf
- https://xiph.org/video/vid1.shtml
- https://xiph.org/video/vid2.shtml
- https://wiki.multimedia.cx
- https://mahanstreamer.net
- http://slhck.info/ffmpeg-encoding-course
- http://www.cambridgeincolour.com/tutorials/camera-sensors.htm
- http://www.slideshare.net/vcodex/a-short-history-of-video-coding
- http://www.slideshare.net/vcodex/introduction-to-video-compression-13394338
- https://developer.android.com/guide/topics/media/media-formats.html
- http://www.slideshare.net/MadhawaKasun/audio-compression-23398426
- http://inst.eecs.berkeley.edu/~ee290t/sp04/lectures/02-Motion_Compensation_girod.pdf
æ¬:
- https://www.amazon.com/Understanding-Compression-Data-Modern-Developers/dp/1491961538/ref=sr_1_1?s=books&ie=UTF8&qid=1486395327&sr=1-1
- https://www.amazon.com/H-264-Advanced-Video-Compression-Standard/dp/0470516925
- https://www.amazon.com/High-Efficiency-Video-Coding-HEVC/dp/3319068946
- https://www.amazon.com/Practical-Guide-Video-Audio-Compression/dp/0240806301/ref=sr_1_3?s=books&ie=UTF8&qid=1486396914&sr=1-3&keywords=A+PRACTICAL+GUIDE+TO+VIDEO+AUDIO
- https://www.amazon.com/Video-Encoding-Numbers-Eliminate-Guesswork/dp/0998453005/ref=sr_1_1?s=books&ie=UTF8&qid=1486396940&sr=1-1&keywords=jan+ozer
ãããã¹ããªãŒã 仿§:
- http://www.itu.int/rec/T-REC-H.264-201610-I
- http://www.itu.int/ITU-T/recommendations/rec.aspx?rec=12904&lang=en
- https://storage.googleapis.com/downloads.webmproject.org/docs/vp9/vp9-bitstream-specification-v0.6-20160331-draft.pdf
- http://iphome.hhi.de/wiegand/assets/pdfs/2012_12_IEEE-HEVC-Overview.pdf
- http://phenix.int-evry.fr/jct/doc_end_user/current_document.php?id=7243
- http://gentlelogic.blogspot.com.br/2011/11/exploring-h264-part-2-h264-bitstream.html
- https://forum.doom9.org/showthread.php?t=167081
- https://forum.doom9.org/showthread.php?t=168947
ãœãããŠã§ã¢:
- https://ffmpeg.org/
- https://ffmpeg.org/ffmpeg-all.html
- https://ffmpeg.org/ffprobe.html
- https://mediaarea.net/en/MediaInfo
- https://www.jongbel.com/
- https://trac.ffmpeg.org/wiki/
- https://software.intel.com/en-us/intel-video-pro-analyzer
- https://medium.com/@mbebenita/av1-bitstream-analyzer-d25f1c27072b#.d5a89oxz8
éITUã³ãŒããã¯:
- https://aomedia.googlesource.com/
- https://github.com/webmproject/libvpx/tree/master/vp9
- https://ghostarchive.org/archive/0W0d8 (was: https://people.xiph.org/~xiphmont/demo/daala/demo1.shtml)
- https://people.xiph.org/~jm/daala/revisiting/
- https://www.youtube.com/watch?v=lzPaldsmJbk
- https://fosdem.org/2017/schedule/event/om_av1/
ãšã³ã³ãŒãã®æŠå¿µ:
- http://x265.org/hevc-h265/
- http://slhck.info/video/2017/03/01/rate-control.html
- http://slhck.info/video/2017/02/24/vbr-settings.html
- http://slhck.info/video/2017/02/24/crf-guide.html
- https://arxiv.org/pdf/1702.00817v1.pdf
- https://trac.ffmpeg.org/wiki/Debug/MacroblocksAndMotionVectors
- http://web.ece.ucdavis.edu/cerl/ReliableJPEG/Cung/jpeg.html
- http://www.adobe.com/devnet/adobe-media-server/articles/h264_encoding.html
- https://prezi.com/8m7thtvl4ywr/mp3-and-aac-explained/
- https://blogs.gnome.org/rbultje/2016/12/13/overview-of-the-vp9-video-codec/
ãã¹ãçšãããªã·ãŒã±ã³ã¹:
- http://bbb3d.renderfarming.net/download.html
- https://www.its.bldrdoc.gov/vqeg/video-datasets-and-organizations.aspx
ãã®ä»:
- https://github.com/Eyevinn/streaming-onboarding
- http://stackoverflow.com/a/24890903
- http://stackoverflow.com/questions/38094302/how-to-understand-header-of-h264
- http://techblog.netflix.com/2016/08/a-large-scale-comparison-of-x264-x265.html
- http://vanseodesign.com/web-design/color-luminance/
- http://www.biologymad.com/nervoussystem/eyenotes.htm
- http://www.compression.ru/video/codec_comparison/h264_2012/mpeg4_avc_h264_video_codecs_comparison.pdf
- https://web.archive.org/web/20100728070421/http://www.csc.villanova.edu/~rschumey/csc4800/dct.html (was: http://www.csc.villanova.edu/~rschumey/csc4800/dct.html)
- http://www.explainthatstuff.com/digitalcameras.html
- http://www.hkvstar.com
- http://www.hometheatersound.com/
- http://www.lighterra.com/papers/videoencodingh264/
- http://www.red.com/learn/red-101/video-chroma-subsampling
- http://www.slideshare.net/ManoharKuse/hevc-intra-coding
- http://www.slideshare.net/mwalendo/h264vs-hevc
- http://www.slideshare.net/rvarun7777/final-seminar-46117193
- http://www.springer.com/cda/content/document/cda_downloaddocument/9783642147029-c1.pdf
- http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/A-Progress-Report-The-Alliance-for-Open-Media-and-the-AV1-Codec-110383.aspx
- http://www.streamingmediaglobal.com/Articles/ReadArticle.aspx?ArticleID=116505&PageNum=1
- http://yumichan.net/video-processing/video-compression/introduction-to-h264-nal-unit/
- https://cardinalpeak.com/blog/the-h-264-sequence-parameter-set/
- https://cardinalpeak.com/blog/worlds-smallest-h-264-encoder/
- https://codesequoia.wordpress.com/category/video/
- https://developer.apple.com/library/content/technotes/tn2224/_index.html
- https://en.wikibooks.org/wiki/MeGUI/x264_Settings
- https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming
- https://en.wikipedia.org/wiki/AOMedia_Video_1
- https://en.wikipedia.org/wiki/Chroma_subsampling#/media/File:Colorcomp.jpg
- https://en.wikipedia.org/wiki/Cone_cell
- https://en.wikipedia.org/wiki/File:H.264_block_diagram_with_quality_score.jpg
- https://en.wikipedia.org/wiki/Inter_frame
- https://en.wikipedia.org/wiki/Intra-frame_coding
- https://en.wikipedia.org/wiki/Photoreceptor_cell
- https://en.wikipedia.org/wiki/Pixel_aspect_ratio
- https://en.wikipedia.org/wiki/Presentation_timestamp
- https://en.wikipedia.org/wiki/Rod_cell
- https://it.wikipedia.org/wiki/File:Pixel_geometry_01_Pengo.jpg
- https://leandromoreira.com.br/2016/10/09/how-to-measure-video-quality-perception/
- https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping
- https://softwaredevelopmentperestroika.wordpress.com/2014/02/11/image-processing-with-python-numpy-scipy-image-convolution/
- https://tools.ietf.org/html/draft-fuldseth-netvc-thor-03
- https://www.encoding.com/android/
- https://www.encoding.com/http-live-streaming-hls/
- https://web.archive.org/web/20150129171151/https://www.iem.thm.de/telekom-labor/zinke/mk/mpeg2beg/whatisit.htm
- https://www.lifewire.com/cmos-image-sensor-493271
- https://www.linkedin.com/pulse/brief-history-video-codecs-yoav-nativ
- https://www.linkedin.com/pulse/video-streaming-methodology-reema-majumdar
- https://www.vcodex.com/h264avc-intra-precition/
- https://www.youtube.com/watch?v=9vgtJJ2wwMA
- https://www.youtube.com/watch?v=LFXN9PiOGtY
- https://www.youtube.com/watch?v=Lto-ajuqW3w&list=PLzH6n4zXuckpKAj1_88VS-8Z6yn9zX_P6
- https://www.youtube.com/watch?v=LWxu4rkZBLw
- https://web.stanford.edu/class/ee398a/handouts/lectures/EE398a_MotionEstimation_2012.pdf
- https://sander.saares.eu/categories/drm-is-not-a-black-box/









































































