[ðºðž](/README.md "English")
[ðšð³](/README-cn.md "Simplified Chinese")
[ð¯ðµ](/README-ja.md "Japanese")
[ð®ð¹](/README-it.md "Italian")
[ð°ð·](/README-ko.md "Korean")
[ð·ðº](/README-ru.md "Russian")
[ð§ð·](/README-pt.md "Portuguese")
[ðªðž](/README-es.md "Spanish")
[](https://img.shields.io/badge/license-BSD--3--Clause-blue.svg)
# ã¯ããã«
ããã¯ããããªæè¡ã«é¢ããããããè§£èª¬è³æã§ãããœãããŠã§ã¢éçºè
ããšã³ãžãã¢ã察象ã«ããŠããŸããã**誰ã§ãçè§£ã§ãã**解説ã«ããããšæã£ãŠããŸãããã®ã¢ã€ãã£ã¢ã¯ã[ãããªæè¡ååŠè
ã®ããã®ããã¯ãŒã¯ã·ã§ãã](https://docs.google.com/presentation/d/17Z31kEkl_NGJ0M66reqr9_uTG6tI5EDDVXpdPKVuIrs/edit#slide=id.p)ããçãŸããŸããã
ã§ããã ã**ç°¡æœãªèšèãå€ãã®èŠèŠçèŠçŽ ãå
·äœçãªäŸ**ã䜿ãããšã§ã誰ã§ãããžã¿ã«ãããªã®æŠå¿µãçè§£ã§ããããšãç®æšã«ããŠããŸããæ°è»œã«èšæ£ãææ¡ãéããæ¹åããŠãã ããã
æ¬è³æã«ã¯**ãã³ãºãªã³**ã«ãã解説ãå«ãŸããŠããŸãããã³ãºãªã³ã«åãçµãæ¹ã¯ãäºåã«dockerãã€ã³ã¹ããŒã«ãããã®ã¬ããžããªãã¯ããŒã³ããŠãããŠãã ããã
```bash
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ãã£ã«ã¿ãŒã®äŸã远å
# ç®æ¬¡
- [ã¯ããã«](#ã¯ããã«)
- [ç®æ¬¡](#ç®æ¬¡)
- [åºæ¬çšèª](#åºæ¬çšèª)
* [ã«ã©ãŒç»åã笊å·åããå¥ã®æ¹æ³](#ã«ã©ãŒç»åã笊å·åããå¥ã®æ¹æ³)
* [ãã³ãºãªã³: ç»åãšè²ã®å®éš](#ãã³ãºãªã³-ç»åãšè²ã®å®éš)
* [DVDã®ç»é¢ã¢ã¹ãã¯ãæ¯ã¯4:3](#dvdã®ç»é¢ã¢ã¹ãã¯ãæ¯ã¯43)
* [ãã³ãºãªã³: ãããªããããã£ã調ã¹ã](#ãã³ãºãªã³-ãããªããããã£ã調ã¹ã)
- [åé·æ§é€å»](#åé·æ§é€å»)
* [è²ãæãããšç§ãã¡ã®ç®](#è²ãæãããšç§ãã¡ã®ç®)
+ [ã«ã©ãŒã¢ãã«](#ã«ã©ãŒã¢ãã«)
+ [YCbCrãšRGBéã®å€æ](#ycbcrãšrgbéã®å€æ)
+ [ã¯ãããµããµã³ããªã³ã°](#ã¯ãããµããµã³ããªã³ã°)
+ [ãã³ãºãªã³: YCbCrãã¹ãã°ã©ã ã調ã¹ã](#ãã³ãºãªã³-ycbcrãã¹ãã°ã©ã ã調ã¹ã)
* [ãã¬ãŒã ã®çš®é¡](#ãã¬ãŒã ã®çš®é¡)
+ [Iãã¬ãŒã (ã€ã³ãã©ãããŒãã¬ãŒã )](#iãã¬ãŒã -ã€ã³ãã©ãããŒãã¬ãŒã )
+ [Pãã¬ãŒã (äºæž¬)](#pãã¬ãŒã -äºæž¬)
- [ãã³ãºãªã³: Iãã¬ãŒã ãïŒã€ã ãã®ãããª](#ãã³ãºãªã³-iãã¬ãŒã ãïŒã€ã ãã®ãããª)
+ [Bãã¬ãŒã (åæ¹åäºæž¬)](#bãã¬ãŒã -åæ¹åäºæž¬)
- [ãã³ãºãªã³: Bãã¬ãŒã ä»ãã®ãããªãšã®æ¯èŒ](#ãã³ãºãªã³-bãã¬ãŒã ä»ãã®ãããªãšã®æ¯èŒ)
+ [ãŸãšã](#ãŸãšã)
* [æéçåé·æ§ (ã€ã³ã¿ãŒäºæž¬)](#æéçåé·æ§-ã€ã³ã¿ãŒäºæž¬)
- [ãã³ãºãªã³: åããã¯ãã«ãèŠã](#ãã³ãºãªã³-åããã¯ãã«ãèŠã)
* [空éçåé·æ§ (ã€ã³ãã©äºæž¬)](#空éçåé·æ§-ã€ã³ãã©äºæž¬)
- [ãã³ãºãªã³: ã€ã³ãã©äºæž¬ã調ã¹ã](#ãã³ãºãªã³-ã€ã³ãã©äºæž¬ã調ã¹ã)
- [ãããªã³ãŒããã¯ã®ä»çµã¿](#ãããªã³ãŒããã¯ã®ä»çµã¿)
* [äœã? ãªã? ã©ã®ããã«?](#äœã-ãªã-ã©ã®ããã«)
* [æŽå²](#æŽå²)
+ [AV1ã®èªç](#av1ã®èªç)
* [äžè¬çã³ãŒããã¯](#äžè¬çã³ãŒããã¯)
* [ã¹ãããïŒ - ç»ååå²](#ã¹ãããïŒ---ç»ååå²)
+ [ãã³ãºãªã³: ããŒãã£ã·ã§ã³ã調ã¹ã](#ãã³ãºãªã³-ããŒãã£ã·ã§ã³ã調ã¹ã)
* [ã¹ãããïŒ - äºæž¬](#ã¹ãããïŒ---äºæž¬)
* [ã¹ãããïŒ - 倿](#ã¹ãããïŒ---倿)
+ [ãã³ãºãªã³: çš®ã
ã®ä¿æ°ãæšãŠã](#ãã³ãºãªã³-çš®ã
ã®ä¿æ°ãæšãŠã)
* [ã¹ãããïŒ - éåå](#ã¹ãããïŒ---éåå)
+ [ãã³ãºãªã³: éåå](#ãã³ãºãªã³-éåå)
* [ã¹ãããïŒ - ãšã³ããããŒç¬Šå·å](#ã¹ãããïŒ---ãšã³ããããŒç¬Šå·å)
+ [å¯å€é·ç¬Šå·](#å¯å€é·ç¬Šå·)
+ [ç®è¡ç¬Šå·](#ç®è¡ç¬Šå·)
+ [ãã³ãºãªã³: CABAC察CAVLC](#ãã³ãºãªã³-cabac察cavlc)
* [ã¹ãããïŒ - ãããã¹ããªãŒã ãã©ãŒããã](#ã¹ãããïŒ---ãããã¹ããªãŒã ãã©ãŒããã)
+ [H.264ãããã¹ããªãŒã ](#h264ãããã¹ããªãŒã )
+ [ãã³ãºãªã³: H.264ãããã¹ããªãŒã ã調ã¹ã](#ãã³ãºãªã³-h264ãããã¹ããªãŒã ã調ã¹ã)
* [ãããã](#ãããã)
* [ã©ã®ããã«H.265ã¯H.264ãããè¯ãå§çž®çãå®çŸããŠããã®ã?](#ã©ã®ããã«h265ã¯h264ãããè¯ãå§çž®çãå®çŸããŠããã®ã)
- [ãªã³ã©ã€ã³ã¹ããªãŒãã³ã°](#ãªã³ã©ã€ã³ã¹ããªãŒãã³ã°)
* [äžè¬çãªã¢ãŒããã¯ãã£](#äžè¬çãªã¢ãŒããã¯ãã£)
* [ããã°ã¬ãã·ãããŠã³ããŒããšã¢ãããã£ãã¹ããªãŒãã³ã°](#ããã°ã¬ãã·ãããŠã³ããŒããšã¢ãããã£ãã¹ããªãŒãã³ã°)
* [ã³ã³ãã³ãä¿è·](#ã³ã³ãã³ãä¿è·)
- [jupyterã®äœ¿ãæ¹](#jupyterã®äœ¿ãæ¹)
- [ã«ã³ãã¡ã¬ã³ã¹](#ã«ã³ãã¡ã¬ã³ã¹)
- [åèæç®](#åèæç®)
# åºæ¬çšèª
**ç»å**ã¯ã**äºæ¬¡å
ãããªã¯ã¹**ãšããŠèããããšãã§ããŸããããã«æ¬¡å
ãå¢ãããŠ**äžæ¬¡å
ãããªã¯ã¹**ã«ããããšã§ç»åã®è²ã衚çŸããããšãå¯èœã§ãã
ç»åã®è²ã[åè² (èµ€ãç·ãé)](https://ja.wikipedia.org/wiki/%E5%8E%9F%E8%89%B2)ã§è¡šçŸãããšãäžã€ã®å¹³é¢ãå®çŸ©ããããšã«ãªããŸããäžã€ãã**èµ€**ãäºã€ç®ã**ç·**ããããŠäžã€ç®ã**é**ã§ãã

ãããªã¯ã¹ã®ããããã®èŠçŽ ã**ãã¯ã»ã«** (ç»çŽ )ãšåŒã³ãŸããäžã€ã®ãã¯ã»ã«ã¯ãã®è²ã®**匷床** (éåžžã¯æ°å€)ã衚ããŸããäŸãã°ã**èµ€è²ã®ãã¯ã»ã«**ã¯ãç·ã0ãéã0ãèµ€ãæå€§ã®åŒ·åºŠã«ãã衚çŸã§ããŸãã**ãã³ã¯è²ã®ãã¯ã»ã«**ãåæ§ã«3ã€ã®å€ã§è¡šçŸã§ããŸãã0ãã255ã®æ°å€ã§è¡šçŸããããšã«ããããã³ã¯ãã¯ã»ã«ã¯**èµ€=255ãç·=192ãé=203**ãšå®çŸ©ã§ããŸãã
> #### ã«ã©ãŒç»åã笊å·åããå¥ã®æ¹æ³
> è²ã衚çŸããæ¹æ³ã¯ãä»ã«ããããããããŸããäŸãã°ãRGBã¢ãã«ã§ã¯åãã¯ã»ã«ã§3ãã€ããå¿
èŠãšããŸãããã€ã³ããã¯ã¹ãã¬ããã¯1ãã€ãããå¿
èŠãããŸããããããã£ãã¢ãã«ã§ã¯ãè²ã衚çŸããããã«äžæ¬¡å
ã¢ãã«ã䜿ããã«äºæ¬¡å
ã¢ãã«ã䜿çšã§ããã§ããããã¡ã¢ãªãç¯çŽã§ããŸãããè²ã®éžæè¢ãçããããšã«ãªããŸãã
>
> 
äŸãã°ãäžã®ç»åãã¿ãŠãã ããã1çªå·Šã®ç»åã¯è²ä»ããããŠãããä»ã®ç»åã¯èµ€ãç·ãéã®åŒ·åºŠã衚ãå¹³é¢ã§ã(ã°ã¬ãŒããŒã³ã§è¡šç€ºããŠããŸã)ã

**èµ€è²**ãæãå€ã䜿ãããŠããããšãåãããŸã(å·Šããäºçªç®ã®é¡ã®æãæããéšå)ãäžæ¹**éè²** ã¯æã®äžéšãš**ããªãªã®ç®ã«ããã¿ãããŸãã**(æåŸã®é¡) ã**ããªãªã®ã²ã**ã«å¯ŸããŠã¯ã**ã©ã®è²ãããŸã䜿ãããŠããªã**(æãæãéšå)ããšãåãããŸãã
åè²ã®åŒ·åºŠã¯**ãããæ·±åºŠ**ãšãã°ããäžå®éã®ãããã§è¡šçŸãããŸããè²(å¹³é¢)ããšã«**8ããã**(0ãã255ã®å€ã§è¡šçŸãã)ã䜿ãå Žåã**24ããã**(8ããã x 3次å
R/G/B)ã®**è²æ·±åºŠ**ãæã€ããšã«ãªãã2ã®24ä¹çš®é¡ã®è²ã䜿ããããšãæšæž¬ã§ããŸãã
> [ç»åãã©ã®ããã«äžç©ãããããšããŠãšãããã®ã](http://www.cambridgeincolour.com/tutorials/camera-sensors.htm)ãåŠã¶ãš **è¯ã**ã§ããã
ããäžã€ã®ç»åã®ããããã£ã¯ **è§£å床**ã§ããè§£å床ã¯é·ããããã®ãã¯ã»ã«ã®æ°ã§ããè§£å床ã¯ããå¹
x é«ããšããŠè¡šçŸãããŸããäŸãã°ãäžèšã¯**4Ã4**ã®ç»åã§ãã

> #### ãã³ãºãªã³: ç»åãšè²ã®å®éš
> [jupyter](#jupyterã®äœ¿ãæ¹) (pythonãnumpyãmatplotlibããã®ä»)ã䜿ã£ãŠã[ç»åãšè²ã®å®éš](/image_as_3d_array.ipynb)ãããŸãããã
>
> [(ãšããžæ€åº, ã·ã£ãŒãå, ãŒããçã®)ç»åãã£ã«ã¿ãã©ã®ããã«åãã](/filters_are_easy.ipynb)ãåŠã³ãŸãããã
ç»åããããªã®äœæ¥ãããæã«ã¿ãããäžã€ã®ããããã£ã¯ **ã¢ã¹ãã¯ãæ¯**ã§ããã¢ã¹ãã¯ãæ¯ã¯ãç»åããã¯ã»ã«ã®å¹
ãšé«ãã®æ¯çã衚ããŸãã
åç»ãç»åã**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ã䜿ã£ãŠèª¬æããããããã£ã®ã»ãšãã©ã調ã¹ã](https://github.com/leandromoreira/introduction_video_technology/blob/master/encoding_pratical_examples.md#inspect-stream)ããšãã§ããŸãã
# åé·æ§é€å»
å§çž®ãªãã«ãããªãæ±ãããšã¯äžå¯èœã§ããããšãåŠã³ãŸãããè§£å床ã720pã§30fpsã®å Žåã**1æéã®ãããªäžã€**ã«**278GB*ãå¿
èŠ**ã§ãã(PKZIPãGzipãPNGã§äœ¿ãããŠãã)DEFLATE ã®ãããª**å¯éå§çž®ã¢ã«ãŽãªãºã äžã€ã䜿ãã ãã§ã¯**å¿
èŠãªåž¯åå¹
ãååã«åæž**ã§ããªã**ããããããªãå§çž®ããå¥ã®æ¹æ³ãèŠã€ããå¿
èŠãããã®ã§ãã
> * ãã®æ°å€ã¯1280 x 720 x 24 x 30 x 3600 (å¹
ãé«ãããã¯ã»ã«ãããã®ãããæ°ããã¬ãŒã ã¬ãŒããç§åäœã§ã®æé)ãæããããšã§ç®åºããŸãã
ãããæãéããããã«ã**ç§ãã¡ã®èŠèŠã®ä»çµã¿ãå©çšãã**ããšãã§ããŸããç§ãã¡ã¯è²ãããæãããèŠåããããšãåŸæã§ãããŸãããããªã«ã¯å°ãã®å€åãããªãå€ãã®ç»åãå«ãŸããŠãã**æéçç¹°ãè¿ã**ããããŸããããããã®ãã¬ãŒã ããŸããå€ãã®é åã§ã¯åãã䌌ãŠããè²ã䜿ãããŠãã**ç»åå
ã®ç¹°ãè¿ã**ããããŸãã
## è²ãæãããšç§ãã¡ã®ç®
ç§ãã¡ã®ç®ã¯[è²ãããæããã«ããææ](http://vanseodesign.com/web-design/color-luminance/)ã§ãããã®ç»åãã¿ãŠãããèªåèªèº«ã§ç¢ºèªã§ããŸãã

å·ŠåŽã®**æ£æ¹åœ¢Aãšæ£æ¹åœ¢B**ã®è²ã¯**åã**ã§ããããšãåãããªããšããŠã倧äžå€«ã§ããç§ãã¡ã®è³ã¯**è²ãããææã«æ³šæãã¯ãã**ããšã§é¯èŠãèµ·ããããŠããã®ã§ããå³åŽã§ã¯ãåãè²ã®ã³ãã¯ã¿ãŒããããããç§ãã¡ïŒç§ãã¡ã®è³ïŒã¯ããããã¯å®éã¯åãè²ã§ãããšããããšãç°¡åã«æ°ã¥ããŸãã
> **ç§ãã¡ã®ç®ãã©ã®ããã«æ©èœãããã®ç°¡åãªèª¬æ**
>
> [çŒã¯è€éãªåšå®](http://www.biologymad.com/nervoussystem/eyenotes.htm)ã§ãããããã®ããŒãããæãç«ã£ãŠããŸãããäž»ã«éäœçްèãšæ¡¿äœçްèã«é¢å¿ããããŸããçŒã¯ [1å2000äžã®æ¡¿äœçްèãš600äžã®éäœçްèãå«ãã§ãã](https://en.wikipedia.org/wiki/Photoreceptor_cell)ã®ã§ãã
>
> **ãã®ãããç°¡åã«ãã**ãããçŒã®ããŒãã®æ©èœã®ãã¡è²ãšæããã«çŠç¹ãåœãŠãŸãããã**[æ¡¿äœçްè](https://en.wikipedia.org/wiki/Rod_cell)ã¯äž»ã«æããã«å¯ŸããŠè²¬ä»»ãæã£ãŠããŸã**ãäžæ¹ **[éäœçްè](https://en.wikipedia.org/wiki/Cone_cell)ã¯è²ã«å¯ŸããŠè²¬ä»»ãæã£ãŠããŸã**ãç°ãªã£ãè²çŽ ãæã€3çš®é¡ã®éäœããããååã¯[Séäœ(é)ãMéäœ(ç·)ãLéäœ(èµ€)](https://upload.wikimedia.org/wikipedia/commons/1/1e/Cones_SMJ2_E.svg)ã§ãã
>
> ç§ãã¡ã¯éäœçްè(è²)ãããå€ãã®æ¡¿äœçްè(æãã)ãæã£ãŠãããããè²ãããææãããèå¥ããããšãã§ããããšãæšè«ã§ããŸãã
>
> 
>
> **ã³ã³ãã©ã¹ãæåºŠç¹æ§ (Contrast sensitivity functions)**
>
> å®éšå¿çåŠãã¯ããããŸããŸãªåéã®ç ç©¶è
ãã人éã®èŠèŠã«ã€ããŠå€ãã®çè«ãäœãäžããŠããŸããããã®ã²ãšã€ããã³ã³ãã©ã¹ãæåºŠç¹æ§ãã§ããã³ã³ãã©ã¹ãæåºŠç¹æ§ã¯å
ã®æç©ºéã«é¢ãããã®ã§ãããŸãã芳å¯è
ã«ããå
ãæç€ºããå
ãå€åãããŠãããŸãããã®ç¹æ§ã¯ã芳å¯è
ãå€åã«æ°ä»ãããšå ±åãããŸã§ãã©ãã ãå
ãå€åãããå¿
èŠããããã瀺ããŸããè€æ°åœ¢ã® `functions` ãšãªã£ãŠããã®ã¯ãçœé»ã ãã§ãªããã«ã©ãŒã§ãæåºŠã枬å®ã§ããããã§ããå®éšçµæãããå€ãã®å Žåã人éã®ç®ã¯è²ãããæããã«ææã ãšããããŸããã
ç§ãã¡ã¯**èŒåºŠ**(ç»åã®æããã®åºŠåã)ã«ããææã§ããããšãåãããŸããããã®ç¹æ§ãå©çšããŸãããã
### ã«ã©ãŒã¢ãã«
**RGBã¢ãã«**ã䜿ã£ãŠ[ã«ã©ãŒç»åãã©ã®ããã«](#åºæ¬çšèª)æ©èœããã®ãæåã«åŠã³ãŸããããä»ã®ã¢ãã«ãååšããŸããå®ã¯ãèŒåºŠ(æãã)ãšè²åºŠ(è²)ãå¥ã«ããã¢ãã«ãååšããŸããããã¯**YCbCr***ãšããŠç¥ãããŠããŸãã
> * åãåé¢ãè¡ãã¢ãã«ã¯ãã£ãšååšããŸãã
ãã®ã«ã©ãŒã¢ãã«ã¯æããã衚ãããã«**Y**ã䜿ããïŒã€ã®è²ãã£ã³ãã«**Cb** (éã®è²å·®)ãš**Cr** (èµ€ã®è²å·®)ã䜿ããŸãã[YCbCr](https://en.wikipedia.org/wiki/YCbCr)ã¯RGBããçæããããšãã§ããRGBã«æ»ãããšãã§ããŸããäžã®åçã®ããã«ããã®ã¢ãã«ã䜿ã£ãŠãã«ã«ã©ãŒã®ç»åãäœãããšãã§ããŸãã

### YCbCrãšRGBéã®å€æ
äžã«ã¯ **ç·ãªãã§è²**ã®å
šãŠãçæã§ããã®ããšç°è°ãå±ããæ¹ãããã§ãããã
ãã®è³ªåã«çããããã«ãRGBããYCbCrãžã®å€æãäžéã説æããŸãã**[ITU-Rã°ã«ãŒã*](https://en.wikipedia.org/wiki/ITU-R)** ã«ãã£ãŠæšå¥šããã **[BT.601æšæº](https://en.wikipedia.org/wiki/Rec._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ãšã¯äœãïŒã©ã®ãã¬ãŒã ã¬ãŒããè§£å床ãã«ã©ãŒã¢ãã«ã䜿ãã¹ããïŒ](https://en.wikipedia.org/wiki/Rec._2020)ãªã©ã§ãã
äžè¬çã«**ãã£ã¹ãã¬ã€** (ã¢ãã¿ãŒããã¬ããã¹ã¯ãªãŒã³ç) ã¯æ§ã
ãªæ¹æ³ã§æ§æããã**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ãã¹ãã°ã©ã ã調ã¹ã](/encoding_pratical_examples.md#generates-yuv-histogram)ããšãã§ããŸãã ãã®ã·ãŒã³ã§ã¯éã®å¯äžçãããé«ããªã£ãŠããŸãã [ãã¹ãã°ã©ã ](https://en.wikipedia.org/wiki/Histogram)ã§ãã®ããšã瀺ãããŸãã
>
> 
### è²ãèŒåºŠãæãããã¬ã³ãã«ã€ããŠã®æ å
èŒåºŠãæãããã¬ã³ããè²ã«ã€ããŠè§£èª¬ããŠããçŽ æŽãããåç»ããããŸãããã²ã芧ãã ããã
[](http://www.youtube.com/watch?v=Ymt47wXUDEU)
> ### ãã³ãºãªã³: YCbCr 匷床ã調ã¹ã
> [FFmpegã®oscilloscope filter](https://ffmpeg.org/ffmpeg-filters.html#oscilloscope)ã䜿ã£ãŠãæ åã®Yã®åŒ·åºŠãå¯èŠåã§ããŸãã
> ```bash
> 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ãã¬ãŒã ã®ãããª](/encoding_pratical_examples.md#1-i-frame-and-the-rest-p-frames)ã«ãšã³ã³ãŒããããã©ãã§ãããïŒ
>
> ãã®ãããªããšã³ã³ãŒãããåŸãåçããŠãããªã®**åæ¹ã«ã·ãŒã¯**ããŠãã ãããã·ãŒã¯å
ã«ç§»ãã®ã«**æéãããã**ããšã«æ°ã¥ãã§ããããããã¯ãæç»ã®ããã«**Pãã¬ãŒã ãåç
§ãã¬ãŒã ãå¿
èŠãšãã** (äŸãã°Iãã¬ãŒã )ããã§ãã
>
> ããïŒã€æè»œã«ã§ãããã¹ããšããŠããŸãïŒã€ã®I-Frameã ãã䜿ã£ãŠãããªããšã³ã³ãŒãããŠã次ã«[ïŒç§ééã§Iãã¬ãŒã ãæ¿å
¥ããŠãšã³ã³ãŒã](/encoding_pratical_examples.md#1-i-frames-per-second-vs-05-i-frames-per-second)ããŠããã**ããããã®ãšã³ã³ãŒãçµæã®ãµã€ãºãæ¯èŒ**ããŠãã ããã
### Bãã¬ãŒã (åæ¹åäºæž¬)
éå»ãšæªæ¥ã®ãã¬ãŒã äž¡æ¹ãåç
§ããããããã«é«ãå§çž®çãåŸãããšãã§ããã®ã§ã¯ãªãã§ããããïŒïŒãããBãã¬ãŒã ã®åºæ¬ã§ãã
 <-  -> 
> #### ãã³ãºãªã³: Bãã¬ãŒã ä»ãã®ãããªãšã®æ¯èŒ
> ïŒã€ã®æ¹æ³ã§ãšã³ã³ãŒãããŠã¿ãŸããããïŒã€ã¯Bãã¬ãŒã ä»ãã§ãããäžæ¹ã¯[Bãã¬ãŒã ãªã](/encoding_pratical_examples.md#no-b-frames-at-all)ã§ãšã³ã³ãŒãããŠããã¡ã€ã«ãµã€ãºããã³ç»è³ªã確èªããŠãã ããã
### ãŸãšã
ãããã®ç°ãªãçš®é¡ã®ãã¬ãŒã ã¯**ããé«ãå§çž®çãåŸã**ããã«äœ¿ãããŸããæ¬¡ã®ç¯ã§ã©ããã£ãŠãããè¡ãããã®ãèŠãŠãããŸããããããä»ã®ãšããã¯**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ã䜿ã£ãŠãããã®æŠå¿µãå®éš](/frame_difference_vs_motion_estimation_plus_residual.ipynb)ã§ããŸãã
> #### ãã³ãºãªã³: åããã¯ãã«ãèŠã
> [ffmpegã§ã€ã³ã¿ãŒäºæž¬ (åããã¯ãã«)ä»ãã®ãããªãçæãã](/encoding_pratical_examples.md#generate-debug-video)ããšãã§ããŸãã
>
> ")
>
> ãŸãã¯ã[Intel Video Pro Analyzer](https://software.intel.com/en-us/intel-video-pro-analyzer) (ææã§ãããæåã®10ãã¬ãŒã ã«å¶éãããç¡æã詊ãçããããŸã)ã䜿ãããšãã§ããŸãã
>
> 
## 空éçåé·æ§ (ã€ã³ãã©äºæž¬)
ãããªã®äžã®**1ã€1ã€ã®ãã¬ãŒã **ãåæãããšã**ããããã®çžé¢æ§ã®ããé å**ãååšããããšãåãããŸãã

äŸãéããŠã¿ãŠãããŸãããããã®ã·ãŒã³ã¯ã»ãšãã©éãšçœã§æ§æãããŠããŸãã

ãã㯠`Iãã¬ãŒã `ã§ãäºæž¬ã®ããã«**åã®ãã¬ãŒã ã䜿ããŸãã**ããå§çž®ããããšã¯ã§ããŸããèµ€ããããã¯ãéžæããŠãšã³ã³ãŒãããŠã¿ãŸãããã**飿¥ããéšåãèŠã**ãšã**ãã®åšãã®è²ã«åŸå**ãããããšã**æšå®**ããããšãã§ããŸãã

ãã®ãã¬ãŒã ã§ã¯**è²ãåçŽæ¹åã«åºãã**ç¶ããããšã**äºæž¬**ããŠã¿ãŸãã**æªç¥ã®ãã¯ã»ã«ã®è²ã飿¥ãããã¯ã»ã«ã®è²ãæã€**ããšãæå³ããŸãã

**äºæž¬ãééããããããŸãã**ããã®ããããã®ææ³(**ã€ã³ãã©äºæž¬**)ãé©çšããŠããã**å®éã®å€ãåŒããŠ**å·®åãçæããå¿
èŠããããŸãããã®å·®åã¯äºæž¬åãããããã«å§çž®ãããããããªã¯ã¹ã«ãªããŸãã

ä»ã«ãæ§ã
ãªäºæž¬æ¹æ³ããããŸããããã§ç޹ä»ããæ¹æ³ã¯ãçŽç·ç¶ã«äžŠãã é åã®äºæž¬ãè¡ãããããã¯ã®äžã®è¡ã®ãã¯ã»ã«ããããã¯å
ã®åè¡ã«ã³ããŒããŠããŸãããããã«ããã«è§åºŠæåãå ããå·Šé£ã®ãã¯ã»ã«ã®å€ãå©çšããŠãããã¯å
ã®ãã¯ã»ã«å€ãäºæž¬ããæ¹æ³ããããŸãããŸãå·Šé£ãšäžé£ã®ãã¯ã»ã«å€ã®å¹³åãå©çšãããDCäºæž¬ãšããæ¹æ³ããããŸãã
> #### ãã³ãºãªã³: ã€ã³ãã©äºæž¬ã調ã¹ã
> [ffmpegã§ãã¯ããããã¯ãšãããã®äºæž¬ä»ãã®ãããªãçæãã](/encoding_pratical_examples.md#generate-debug-video)ããšãã§ããŸãã[ããããã®ãããã¯ã®è²ã®æå³](https://trac.ffmpeg.org/wiki/Debug/MacroblocksAndMotionVectors?version=7#AnalyzingMacroblockTypes)ãçè§£ããããã«ffmpegã®ããã¥ã¡ã³ãã調ã¹ãŠãã ããã
>
> ")
>
> ãŸãã¯[Intel Video Pro Analyzer](https://software.intel.com/en-us/intel-video-pro-analyzer) (ææã§ãããæåã®10ãã¬ãŒã ã«å¶éãããç¡æã詊ãçããããŸã)ã䜿ãããšãã§ããŸãã
>
> 
# ãããªã³ãŒããã¯ã®ä»çµã¿
## What? Why? How?
**What?** ããžã¿ã«ãããªãå§çž®ãè§£åãããœãããŠã§ã¢ / ããŒããŠã§ã¢ã®éšåã**Why?** å¶éããã垯åãšã¹ãã¬ãŒãžã®äžã§ããé«ãå質ã®ãããªãžã®èŠæ±ããåžå Žãšç€ŸäŒã§é«ãŸã£ãŠãããããæ¯ç§30ãã¬ãŒã ããã¯ã»ã«ããã24ããããè§£å床ã480x240ã®ãããªã«[å¿
èŠãªåž¯åãèšç®](#åºæ¬çšèª)ããã®ãèŠããŠããŸãããå§çž®ãªãã§ã¯**82.944 Mbps**ã§ããããã¬ããã€ã³ã¿ãŒãããã§HD/FullHD/4Kãé
ä¿¡ããããã«ã¯å§çž®ãããããããŸããã**How?** ããã§äž»ãªææ³ã«ã€ããŠç°¡åã«èŠãŠãããŸãã
> **ã³ãŒãã㯠察 ã³ã³ãã**
>
> åå¿è
ããã誀解ããããšã®ïŒã€ã«ãããžã¿ã«ãããªã³ãŒããã¯ãš[ããžã¿ã«ãããªã³ã³ãã](https://en.wikipedia.org/wiki/Digital_container_format)ãæ··åãããšãããã®ããããŸãã**ã³ã³ãã**ã¯ãããª(ãšé³å£°ããããã)ã®ã¡ã¿ããŒã¿ãšãã€ããŒãã§ãã**å§çž®ããããããª**ãå
æ¬ããã©ãããŒãã©ãŒããããšããŠèããããšãã§ããŸãã
>
> ãããŠãããããªãã¡ã€ã«ã®æ¡åŒµåã¯ãã®ãããªã³ã³ãããå®çŸ©ããŸããäŸãã°ããã¡ã€ã«`video.mp4`ã¯ãããã **[MPEG-4 Part 14](https://en.wikipedia.org/wiki/MPEG-4_Part_14)** ã³ã³ããã§ã`video.mkv`ãšããååã®ãã¡ã€ã«ã¯ãããã **[matroska](https://en.wikipedia.org/wiki/Matroska)** ã§ããã³ãŒããã¯ãšã³ã³ãããã©ãŒãããã確å®ã«èª¿ã¹ãããã«ã¯ã[ffmpegãmediainfo](/encoding_pratical_examples.md#inspect-stream)ã䜿ããŸãã
## æŽå²
äžè¬çãªã³ãŒããã¯ã®å
éšåäœã«å
¥ã£ãŠè¡ãåã«ãããã€ãã®å€ããããªã³ãŒããã¯ã«ã€ããŠå°ãçè§£ããããã«éå»ãæ¯ãè¿ã£ãŠã¿ãŸãããã
ãããªã³ãŒããã¯ã§ãã[H.261](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/AOMedia_Video_1)**ã¯æ°ãã**ãã€ã€ãªãã£ãŒããªãŒ**ã§ãªãŒãã³ãœãŒã¹ã®ãããªã³ãŒããã¯ã§ã[Alliance for Open Media (AOMedia)](http://aomedia.org/)ã«ãã£ãŠèšèšãããŸãããAOMediaã¯**è€æ°ã®äŒç€Ÿ: GoogleãMozillaãMicrosoftãAmazonãNetflixãAMDãARMãNVidiaãIntelãCisco**ãšä»ã®ããã€ãã®äŒç€Ÿããæãç«ã£ãŠããŸãããªãã¡ã¬ã³ã¹ã³ãŒããã¯ã®**åç** 0.1.0ã**2016幎4æ7æ¥ã«å
¬éãããŸãã**ã

> #### AV1ã®èªç
>
> 2015幎ã®åæã«Googleã[VP10](https://en.wikipedia.org/wiki/VP9#Successor:_from_VP10_to_AV1)ã®éçºãXiph (Mozilla)ã¯[Daala](https://xiph.org/daala/)ã®éçºãCiscoã¯ãªãŒãã³ãœãŒã¹ã§ãã€ã€ãªãã£ãŒããªãŒã®[Thor](https://tools.ietf.org/html/draft-fuldseth-netvc-thor-03)ãšåŒã°ãããããªã³ãŒããã¯ã®éçºã«åãçµãã§ããŸããã
>
> MPEG LAã¯ãåœåã¯HEVC (H.265)ã®å¹Žéãã€ã€ãªãã£ãŒã®äžéãšH.264ã®8åé«ãã©ã€ã»ã³ã¹æãçºè¡šããŸããããããã«ã«ãŒã«ã倿ŽããŸããã:
> * **幎éãã€ã€ãªãã£ãŒã®äžéãªã**
> * **ã³ã³ãã³ãæé** (åå
¥ã®0.5%)
> * **h264ãã10åé«ãåäœãããæé**
>
> [alliance for open media](http://aomedia.org/about/)ã¯ããŒããŠã§ã¢ã¡ãŒã«ãŒ(IntelãAMDãARMãNvidiaãCisco)ãã³ã³ãã³ãé
ä¿¡ (GoogleãNetflixãAmazon)ããã©ãŠã¶éçº(Google, Mozilla)ããã®ä»ã®äŒç€Ÿã«ãã£ãŠäœãããŸããã
>
> ãããã®äŒç€Ÿã«ã¯ãã€ã€ãªãã£ãŒããªãŒã®ãããªã³ãŒããã¯ãšããå
±éã®ç®çããããAV1ã¯ãã [ç°¡åãªç¹èš±ã©ã€ã»ã³ã¹](http://aomedia.org/license/patent/)ã§èªçããŸããã**Timothy B. Terriberry**ã [AV1ã®æŠå¿µãã©ã€ã»ã³ã¹ã¢ãã«ãçŸç¶](https://www.youtube.com/watch?v=lzPaldsmJbk)ã«ã€ããŠã®çŽ æŽããããã¬ãŒã³ããŒã·ã§ã³ãè¡ããŸããããã®ç¯ã¯ãã®ãã¬ãŒã³ããŒã·ã§ã³ãå
ã«æžããŠããŸãã
>
> **ãã©ãŠã¶ãŒã䜿ã£ãŠAV1ã³ãŒããã¯ãåæ**ã§ããããšãç¥ã£ãŠé©ãããšã§ããããhttps://arewecompressedyet.com/analyzer/ ãèŠãŠãã ããã
>
> 
>
> 远èš: ã³ãŒããã¯ã®æŽå²ã«ã€ããŠãã£ãšåŠã³ãããªããèåŸã«ãã[ãããªå§çž®ã®ç¹èš±](https://www.vcodex.com/video-compression-patents/)ã®åºæ¬ãåŠã°ãªããŠã¯ãªããŸããã
## äžè¬çã³ãŒããã¯
**äžè¬çãªãããªã³ãŒããã¯ã®èåŸã«ããäž»ãªæ©æ§**ã玹ä»ããŠãããŸããããããã®æŠå¿µã®ã»ãšãã©ã¯ VP9ãAV1ãHEVCã®ãããªææ°ã®ã³ãŒããã¯ã§ã圹ã«ç«ã¡ã䜿ãããŠããŸããç©äºãããªãåçŽã«ããŠèª¬æããããšãçè§£ããŠãã ããããšãã©ãå®éã®äŸ(ã ãããã¯H.264)ã䜿ã£ãŠãææ³ã®ãã¢ãè¡ããŸãã
## ã¹ãããïŒ - ç»ååå²
æåã®ã¹ãããã¯ãããã€ãã®**ããŒãã£ã·ã§ã³ããµãããŒãã£ã·ã§ã³**ããã£ãšçްããåäœã«**ãã¬ãŒã ãåå²**ããããšã§ãã

**ããããªã?** ããããã®çç±ããããŸããäŸãã°ãç»åãåå²ãããšå°ããªããŒãã£ã·ã§ã³ãåãã®ããå°ããªéšåã«äœ¿ãããã倧ããªããŒãã£ã·ã§ã³ãéçãªèæ¯ã«äœ¿ã£ãŠãäºæž¬ãããæ£ç¢ºã«è¡ãããšãã§ããŸãã
éåžžãã³ãŒããã¯ã¯ãã¹ã©ã€ã¹(ãããã¯ã¿ã€ã«)ããã¯ã(ãããã¯ç¬Šå·ããªãŒãŠããã)ãããããã®ãµãããŒãã£ã·ã§ã³ã§ **ããŒãã£ã·ã§ã³ãæ§æããŸã**ããããã®ããŒãã£ã·ã§ã³ã®æå€§ãµã€ãºã¯æ§ã
ã§ãHEVCã§ã¯64x64ãAVC16x16ã§ããããµãããŒãã£ã·ã§ã³ã¯4x4ãŸã§ã§ãã
**ãã¬ãŒã ã¯ããã€ãã®åœ¢åŒã«åããããŠãã**ã®ãåŠãã ããšãèŠããŠããŸããïŒïŒããŠã**ãããã®ã¢ã€ãã¢ããããã¯ã«é©çšãã**ããšãã§ããŸããã€ãŸãIã¹ã©ã€ã¹ãBã¹ã©ã€ã¹ãIãã¯ããããã¯ãªã©ãæã€ããšãã§ããŸãã
> ### ãã³ãºãªã³: ããŒãã£ã·ã§ã³ã調ã¹ã
> [Intel Video Pro Analyzer](https://software.intel.com/en-us/intel-video-pro-analyzer) (ææã§ãããæåã®10ãã¬ãŒã ã«å¶éãããç¡æã詊ãçããããŸã)ã䜿ãããšãã§ããŸãããããåæããã[VP9ããŒãã£ã·ã§ã³](/encoding_pratical_examples.md#transcoding)ã§ãã
>
> 
## ã¹ãããïŒ - äºæž¬
ããŒãã£ã·ã§ã³ã«åå²ãããšããããã«ã€ããŠäºæž¬ãè¡ãããšãã§ããŸãã[ã€ã³ã¿ãŒäºæž¬](#æéçåé·æ§-ã€ã³ã¿ãŒäºæž¬)ã®ããã«ã**åããã¯ãã«ãšå·®åãéä¿¡ãã**å¿
èŠãããããŸã[ã€ã³ãã©äºæž¬](#空éçåé·æ§-ã€ã³ãã©äºæž¬)ã®ããã«ã**äºæž¬æ¹åãšå·®åãéä¿¡ãã**å¿
èŠããããŸãã
## ã¹ãããïŒ - 倿
å·®åããã㯠(`äºæž¬ããŒãã£ã·ã§ã³ - å®éã®ããŒãã£ã·ã§ã³`)ãçæããåŸãããã**倿**ããããšã§**ç»è³ªãããçšåºŠ**ä¿ã£ããŸãŸãã©ã®**ãã¯ã»ã«ãæšãŠãããã**ãåããããã«ãªããŸããããã«ã¯ããã€ãã®å€æãååšããŸãã
[ä»ã®å€æ](https://en.wikipedia.org/wiki/List_of_Fourier-related_transforms#Discrete_transforms)ããããŸããã颿£ã³ãµã€ã³å€æ(DCT)ããã£ããèŠãŠãããŸãã[**DCT**](https://en.wikipedia.org/wiki/Discrete_cosine_transform)ã®äž»ãªç¹åŸŽã¯:
* **ãã¯ã»ã«**ãããã¯ãåããµã€ãºã®**åšæ³¢æ°ä¿æ°**ãããã¯ã«**倿ãã**ã
* ãšãã«ã®ãŒã**åãããŠ**ã空éçåé·æ§ãåæžããããããã
* **å
ã«æ»ãã**ããŸãã¯ãã¯ã»ã«ã«æ»ãã
> 2017幎2æ2æ¥ã«Cintra, R. J.ãšBayer, F. Mã[14å ç®ã®ã¿ã®ç»åå§çž®çšDCTè¿äŒŒå€æ](https://arxiv.org/abs/1702.00817)ãšããè«æãçºè¡šããŸããã
äžèšã®ç®æ¡æžãã®å©ç¹ãå
šãŠçè§£ããªãã£ããšããŠãå¿é
ãããŸããããã®æ¬åœã®äŸ¡å€ãèŠãåºãããã«ããã€ãã®å®éšã詊ã¿ãŸãã
次ã®**ãã¯ã»ã«ã®ãããã¯**(8x8)ãäŸã«ãšããŸããã:

ããã¯ãããã¯ç»å(8x8)ãæç»ããŸã:

ãã®ãã¯ã»ã«ã®ãããã¯ã«**DCTãé©çšãã**ãš**ä¿æ°ã®ãããã¯** (8x8)ãåŸãŸã:

ãã®ä¿æ°ã®ãããã¯ãæç»ããã°ã次ã®ç»åãåŸãããã§ããã:

å
ã®ç»åãšã¯äŒŒãŠã䌌ã€ããªãããšãåããã**æåã®ä¿æ°**ã¯ä»ã®ä¿æ°ãšã¯å€§ããç°ãªã£ãŠããããšã«ãæ°ã¥ããããããŸããããã®æåã®ä¿æ°ã¯DCä¿æ°ãšããŠç¥ãããå
¥åé
åã®**ãµã³ãã«å
šäœ**ã衚ããŸãã**å¹³åã«äŒŒã**äœãã§ãã
ãã®ä¿æ°ã®ãããã¯ã¯é«åšæ³¢æ°æåãäœåšæ³¢æ°æåããåãé¢ããšããé¢çœãç¹æ§ãæã£ãŠããŸãã

ç»åã§ã¯ã**ãšãã«ã®ãŒã®ã»ãšãã©**ã¯[**äœåšæ³¢**](https://web.archive.org/web/20150129171151/https://www.iem.thm.de/telekom-labor/zinke/mk/mpeg2beg/whatisit.htm)ã«éäžãããŸããããã§ç»åãåšæ³¢æ°æåã«å€æããŠ**é«åšæ³¢æ°ä¿æ°ãæšãŠ**ãã°ãç»è³ªãããã»ã©ç ç²ã«ããã«ç»åã衚çŸããã®ã«å¿
èŠãª**ããŒã¿éãåæž**ã§ããŸãã
> åšæ³¢æ°ã¯ä¿¡å·ãã©ãã ãéãå€åããããæå³ããŸãã
ã§ã¯åŸãããç¥èã䜿ã£ãŠãå
ã®ç»åãDCTã䜿ã£ãŠåšæ³¢æ°(ä¿æ°ã®ãããã¯)ã«å€æããŠããã£ãšãéèŠã§ãªãä¿æ°ã®éšåãæšãŠãå®éšãããŠã¿ãŸãããã
ãŸããç»åã**åšæ³¢æ°é å**ã«å€æããŸãã

次ã«ãä¿æ°ã®äžéš(67%)ãæšãŠãŸããæšãŠãã®ã¯ã»ãšãã©ã¯å³äžã®éšåã§ãã

æåŸã«ããã®äžéšãæšãŠãããä¿æ°ã®ãããã¯ããç»åãåçæã(å
ã«æ»ããå¿
èŠãããããšãèŠããŠãããŠãã ãã)ãå
ã®ç»åãšæ¯èŒããŸãã

ãã®ç»åã¯å
ã®ç»åãšäŒŒãŠããŸãããå€ãã®çžéç¹ãçºçããŠããŸãã**67.1875%ãæšãŠãŸãã**ãã å°ãªããšãå
ã®ç»åã«äŒŒãŠããç»åãåŸãããšãã§ããŸãããããè³¢ãæ¹æ³ã§ä¿æ°ãæšãŠãŠããã£ãšç»è³ªãè¯ãããããšãã§ããã®ã§ãããããã¯æ¬¡ã®ãããã¯ã§æ±ããŸãã
> **ããããã®ä¿æ°ã¯ç»çŽ å
šäœã䜿ã£ãŠåœ¢æããã**
>
> ããããã®ä¿æ°ã¯ãïŒã€ã®ç»çŽ ã«çŽæ¥ãããã³ã°ããŠããããã§ã¯ãªããç»çŽ å
šäœã®éã¿ä»ãåèšã§ããããšã«çæããããšã¯éèŠã§ããäžèšã®çŽ æŽãããã°ã©ãã¯ã1çªç®ãš2çªç®ã®ä¿æ°ããããããã®ã€ã³ããã¯ã¹ã§ç°ãªãéã¿ã䜿ã£ãŠãã©ã®ããã«èšç®ããããã瀺ããŠããŸãã
>
> 
>
> åå
ž: https://web.archive.org/web/20150129171151/https://www.iem.thm.de/telekom-labor/zinke/mk/mpeg2beg/whatisit.htm
>
> DCTåºåºããšã®[åçŽãªç»åã®åœ¢æãèŠãŠDCTãèŠèŠåãã](/dct_better_explained.ipynb)ããšãã§ããŸããäŸãã°ãäžèšã¯ããããã®ä¿æ°ã®éã¿ã䜿ã£ãŠ[ïŒã€ã®æåã圢æãããŠãã](https://en.wikipedia.org/wiki/Discrete_cosine_transform#Example_of_IDCT)éçšã§ãã
>
> 
> ### ãã³ãºãªã³: çš®ã
ã®ä¿æ°ãæšãŠã
> [DCT倿](/uniform_quantization_experience.ipynb)ãå®éšããŸãããã
## ã¹ãããïŒ - éåå
åã®ã¹ããã (倿)ã§ä¿æ°ãããã€ãæšãŠããšãã«ãéååã®ãããªãã®ãè¡ããŸããããã®ã¹ãããã§ã¯ãæšãŠãæ
å ±(**æå€±éšå**)ãéžã³ãŸããåçŽãªèšèã§ãããšã**å§çž®ãæãéããããã«ä¿æ°ãéåå**ããŸãã
ã©ã®ããã«ä¿æ°ã®ãããã¯ãéååã§ããã§ããããïŒïŒã€ã®åçŽãªæ¹æ³ã¯ãåäžéååã§ãããããããã¯ã**åäžå€** (10) **ã§å²ã**ãå°æ°ç¹ãåãæšãŠãŸãã

ã©ã®ããã«ãã®ä¿æ°ã®ãããã¯ã**å
ã«æ»ãã**(åéåå)ã§ããããïŒ**åãå€** (10)**ãæãã**ããšã«ããæ»ãããšãã§ããŸãã

ãã®**ããæ¹ã¯æé©ãªæ¹æ³ã§ã¯ãããŸãã**ãããããã®ä¿æ°ã®éèŠåºŠãèæ
®ããŠããªãããã§ãã åäžå€ã®ä»£ããã«**éååãããªã¯ã¹**ã䜿ãããšãã§ããŸãããã®ãããªã¯ã¹ã§DCTã®ç¹æ§ã掻ããããšãã§ããŸããå³äžãäžçªéååããŠãå·Šäžã¯ããŸãéååããŸããã[JPEGã¯äŒŒãããæ¹ã䜿ã£ãŠããŸã](https://www.hdm-stuttgart.de/~maucher/Python/MMCodecs/html/jpegUpToQuant.html)ã[ãœãŒã¹ã³ãŒãäžã§ãã®ãããªã¯ã¹ãèŠã](https://github.com/google/guetzli/blob/master/guetzli/jpeg_data.h#L40)ããšãã§ããŸãã
> ### ãã³ãºãªã³: éåå
> [éåå](/dct_experiences.ipynb)ãå®éšããŸãããã
## ã¹ãããïŒ - ãšã³ããããŒç¬Šå·å
ããŒã¿(ç»å ãããã¯/ã¹ã©ã€ã¹/ãã¬ãŒã )ãéååããåŸãããã«å¯éå§çž®ããããšãã§ããŸããããŒã¿å§çž®ã®ããã®ããããã®æ¹æ³(ã¢ã«ãŽãªãºã )ãååšããŸãããããã®ããã€ããç°¡åã«äœéšããŠãããŸããããæ·±ãçè§£ã®ããã«ã¯ããã®çŽ æŽãããæ¬[Understanding Compression: Data Compression for Modern Developers](https://www.amazon.com/Understanding-Compression-Data-Modern-Developers/dp/1491961538/)ãèªããšããã§ãããã
### å¯å€é·ç¬Šå·:
èšå·ã®ã¹ããªãŒã ãæã£ãŠãããšããŸã: **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ããã**ãã䜿ããŸããã
ããããã®ã³ãŒãã¯ãŠããŒã¯ãªæ¥é 笊å·ãæã€å¿
èŠãããããšã«æ³šæããŠãã ãã [ãããã³ããããã®æ°åãèŠã€ããããšãå©ããŠãããŸã](https://en.wikipedia.org/wiki/Huffman_coding)ãããã€ãã®åé¡ããããŸããããã®æ¹æ³ã¯[ããã€ãã®ãããªã³ãŒããã¯ã§ãŸã ãµããŒã](https://en.wikipedia.org/wiki/Context-adaptive_variable-length_coding)ããŠããŸããããã¯å§çž®ãå¿
èŠãšããå€ãã®ã¢ããªã±ãŒã·ã§ã³ã«æçšãªã¢ã«ãŽãªãºã ã§ãã
ãšã³ã³ãŒããŒãšãã³ãŒããŒã®äž¡æ¹ããã®ã³ãŒãã®èšå·ããŒãã«ã**ç¥ããªããŠã¯ãããŸãã**ããã®ããããŒãã«ãéä¿¡ããå¿
èŠããããŸãã
### ç®è¡ç¬Šå·:
èšå·: **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*ã圢æããŸã)ã
笊å·åãšåŸ©å·åã®äž¡æ¹ã¯ãèšå·ç¢ºçããŒãã«ã**ç¥ãå¿
èŠããããŸã**ãããã§ããŒãã«ãéä¿¡ããå¿
èŠããããŸãã
çŽ æŽãããã§ãããã人ã
ã¯æ¬åœã«è³¢ãããã®ãããªè§£æ±ºçãçã¿åºããŸãããããã€ãã®[ãããªã³ãŒããã¯](https://en.wikipedia.org/wiki/Context-adaptive_binary_arithmetic_coding)ã¯ãã®ææ³ã䜿ã£ãŠããŸãã(ãããã¯å°ãªããšããªãã·ã§ã³ãšããŠæäŸããŠããŸã)ã
ãã®èãã¯ãéååãããã¹ããªãŒã ãå¯éå§çž®ããçºã®ãã®ã§ããééããªããã®èšäºã§ã¯äŒããããŠããªã詳现ãçç±ããã¬ãŒããªãçãå±±ã®ããã«ãããŸããããããèªè
ã¯ããããããŒãšããŠ[ãã£ãšåŠã¶ã¹ãã§ã](https://www.amazon.com/Understanding-Compression-Data-Modern-Developers/dp/1491961538/)ãããæ°ããã³ãŒããã¯ã¯å¥ã®[ANSã®ãããªãšã³ããããŒç¬Šå·åã¢ã«ãŽãªãºã ](https://en.wikipedia.org/wiki/Asymmetric_Numeral_Systems)ã䜿ãããšããŠããŸãã
> ### ãã³ãºãªã³: CABAC察CAVLC
> [ïŒã€ã¯CABACãããäžæ¹ã¯CAVLCã䜿ã£ãŠïŒã€ã®ã¹ããªãŒã ãçæ](https://github.com/leandromoreira/introduction_video_technology/blob/master/encoding_pratical_examples.md#cabac-vs-cavlc)ããçæããçºã«ããã**æéãšæçµçãªãµã€ãºãæ¯èŒ**ããŠã¿ãŸãããã
## ã¹ãããïŒ - ãããã¹ããªãŒã ãã©ãŒããã
ãããã®ã¹ãããå
šãŠãè¡ã£ãåŸã**å§çž®ããããã¬ãŒã ãšãããã®ã¹ããããŸã§ã®ã³ã³ããã¹ããäžã€ã«ãŸãšãã**å¿
èŠããããŸãã **ãšã³ã³ãŒãã«ãã£ãŠãªãããæ±ºå®**ããã³ãŒããžæç€ºçã«ç¥ãããå¿
èŠããããŸãããããæ·±åºŠãè²ç©ºéãè§£å床ãäºæž¬æ
å ±ïŒåããã¯ãã«ãã€ã³ãã©äºæž¬æ¹åïŒããããã¡ã€ã«ã¬ãã«ããã¬ãŒã ã¬ãŒãããã¬ãŒã ã¿ã€ãããã¬ãŒã æ°ããã®ä»å€æ°ã§ãã
H.264ãããã¹ããªãŒã ã«ã€ããŠè¡šé¢çã«åŠãã§ãããŸããæåã®ã¹ãããã¯[æå°éã®H.264 *ãããã¹ããªãŒã ãçæãã](/encoding_pratical_examples.md#generate-a-single-frame-h264-bitstream)ããšã§ãããã®ã¬ããžããªãš[ffmpeg](http://ffmpeg.org/)ã䜿ã£ãŠããããã§ããŸãã
```
./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)](https://en.wikipedia.org/wiki/Network_Abstraction_Layer)** ãšåŒã°ãã **ãã¯ããã¬ãŒã ** (ãããã¯ãŒã¯çã«ã¯)ã§éä¿¡ãããããšãå®çŸ©ããŠããŸããNALã®äž»ãªç®çã¯ã"ãããã¯ãŒã¯ãã¬ã³ããªãŒ"ãªãããªè¡šçŸãæäŸããããšã§ãããã®æšæºã¯ãTV (ã¹ããªãŒã ããŒã¹)ãã€ã³ã¿ãŒããã(ãã±ããããŒã¹)ããã®ä»ã§åäœããªããã°ãªããŸããã

NALãŠãããã®å¢çãå®çŸ©ãã **[åæããŒã«ãŒ](https://en.wikipedia.org/wiki/Frame_synchronization)**ããããŸããããããã®åæããŒã«ãŒã¯ãæåã¯`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**ãã£ãŒã«ãã§ããšã³ã³ãŒãã䜿ã£ããããã¡ã€ã«ã瀺ããŸãããã®äŸã§ã¯ã **[å¶çŽä»ããã€ãããã¡ã€ã«](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles)** ã䜿ã£ãŠããŸããããã¯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](https://ghostarchive.org/archive/JBwdI)
ãããã®ãã£ãŒã«ãã®å€ã«å¯ŸããŠããèšç®ããããšã**è§£å床**ãåŸãããšãã§ããŸãã`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](https://ghostarchive.org/archive/JBwdI)ãšåŒã°ããç¹å¥ãªãã³ãŒããŒã䜿ã£ãŠããã³ãŒãããå¿
èŠããããŸãããã®æ¹æ³ã¯ãããã©ã«ãå€ãå€ãã±ãŒã¹ã§ã¯ãããŠãã**倿°å€ã笊å·åããã®ã«ãšãŠãå¹çç**ã§ãã
> ãã®ãããªã®**slice_type**ãš**frame_num**ã®å€ã¯7 (Iã¹ã©ã€ã¹)ãš0 (æåã®ãã¬ãŒã )ã§ãã
**ãããã¹ããªãŒã ããããã³ã«ãšããŠ**èŠãããšãã§ããŸãããã®ãããã¹ããªãŒã ã«ã€ããŠãã£ãšåŠã³ããããããã¯åŠã¶å¿
èŠããããªãã[ITU H.264 spec.]( http://www.itu.int/rec/T-REC-H.264-201610-I)ãåç
§ããŠãã ãããäžèšã¯ãã¯ãå³è¡šã§ããã¯ãã£ããŒã¿(å§çž®YUV)ãã©ãã«äœçœ®ãããã瀺ããŠããŸãã

[VP9ãããã¹ããªãŒã ](https://storage.googleapis.com/downloads.webmproject.org/docs/vp9/vp9-bitstream-specification-v0.6-20160331-draft.pdf)ã[H.265 (HEVC)](http://handle.itu.int/11.1002/1000/11885-en?locatt=format:pdf)ããããã«ã¯**æ°ãããã¹ããã¬ãã§ãã** [**AV1** ãããã¹ããªãŒã ](https://medium.com/@mbebenita/av1-bitstream-analyzer-d25f1c27072b#.d5a89oxz8)ã®ãããã¹ããªãŒã ãæ¢çŽ¢ããããšãã§ããŸãã[ãããã¯ã¿ããªäŒŒãŠãŸããïŒããã](http://www.gpac-licensing.com/2016/07/12/vp9-av1-bitstream-format/)ãããã1ã€ãåŠã¶ãšãä»ã¯ç°¡åã«çè§£ã§ããŸãã
> ### ãã³ãºãªã³: H.264ãããã¹ããªãŒã ã調ã¹ã
> [åäžãã¬ãŒã ã®ãããªãçæ](https://github.com/leandromoreira/introduction_video_technology/blob/master/encoding_pratical_examples.md#generate-a-single-frame-video)ãã[mediainfo](https://en.wikipedia.org/wiki/MediaInfo)ã䜿ã£ãŠH.264ãããã¹ããªãŒã ãæ€æ»ããŠã¿ãŸããããå®éã[h264 (AVC)ãããã¹ããªãŒã ãããŒã¹ãããœãŒã¹ã³ãŒã](https://github.com/MediaArea/MediaInfoLib/blob/master/Source/MediaInfo/Video/File_Avc.cpp)ãèŠãããšãã§ããŸãã
>
> 
>
> [Intel Video Pro Analyzer](https://software.intel.com/en-us/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**](https://developer.apple.com/streaming/fps/)
* PR - [**PlayReady**](https://www.microsoft.com/playready/)
* WV - [**Widevine**](http://www.widevine.com/)
#### What?
DRMã¯[Digital rights management(ããžã¿ã«èäœæš©ç®¡ç)](https://sander.saares.eu/categories/drm-is-not-a-black-box/)ãæå³ããŸããããã¯ããããªããªãŒãã£ãªãªã©ã®**ããžã¿ã«ã¡ãã£ã¢ã«èäœæš©ä¿è·ãæäŸãã**æ¹æ³ã§ããå€ãã®å Žæã§äœ¿ãããŠããŸããã[åºãã¯åãå
¥ããããŠããŸãã](https://en.wikipedia.org/wiki/Digital_rights_management#DRM-free_works)ã
#### 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** (ãã®éµã¯ä¿è·ãã1**D1**ã«ããç¥ãããŠããªã)ãš**å
¬ééµPUK1**ãæã£ãŠããŸãã
> **1ä¿è·ããã**: ãã®ä¿è·ã¯ã**ããŒããŠã§ã¢ãä»ããŠ**ãªãããŸããäŸãã°ããã®éµã¯ãç¹å¥ãª(èªã¿åãå°çš)ãããã®äžã«ä¿åãããŸããããã¯ã埩å·ãæäŸãã[ãã©ãã¯ããã¯ã¹](https://en.wikipedia.org/wiki/Black_box)ã®ããã«åããŸãããããã¯(ããŸãå®å
šã§ãªã)**ãœãããŠã§ã¢ã«ãã**ãªãããŸããDRM ã·ã¹ãã ã¯ãäžããããããã€ã¹ãã©ã®ã¿ã€ãã®ä¿è·ãæã£ãŠããããç¥ãæ¹æ³ãæäŸããŸãã
**ãã¬ã€ã€ãŒP1ãã³ã³ãã³ãC'1ãåçããã**ãšãã**DRMã·ã¹ãã DRM1**ã䜿ãå¿
èŠãããããŸãå
¬ééµ**PUK1**ãäžããŸããDRMã·ã¹ãã DRM1㯠ã¯ã©ã€ã¢ã³ãã®å
¬ééµ**PUK1**ã§**æå·åãããéµK1**ãè¿ããŸããçè«äžããã®ã¬ã¹ãã³ã¹ã¯**D1ã ãã埩å·å¯èœ**ã§ãã
`K1P1D1 = enc(K1, PUK1)`
**P1**ã¯ãDRMããŒã«ã«ã·ã¹ãã (ããã¯ç¹å¥ãªããŒããŠã§ã¢ããœãããŠã§ã¢ã§ãã[SOC](https://en.wikipedia.org/wiki/System_on_a_chip)ããªããã)ã䜿ããŸãããã®ã·ã¹ãã ã¯ãç§å¯éµPRK1ã䜿ã£ãŠãã³ã³ãã³ãã**埩å·ããããšãã§ããŸã**ã**K1P1D1ããã®å¯Ÿç§°éµK1**ã埩å·åããŠã**C'1ãåç**ããããšãã§ããŸããéµãRAMäžã§å€ã«ãããããªãã®ããã¹ãã§ãã
```
K1 = dec(K1P1D1, PRK1)
P1.play(dec(C'1, K1))
```

# jupyterã®äœ¿ãæ¹
**dockerãã€ã³ã¹ããŒã«**ãããŠããããšã確èªããŠã`./s/start_jupyter.sh`ãå®è¡ããã¿ãŒããã«äžã®æç€ºã«åŸã£ãŠãã ããã
# ã«ã³ãã¡ã¬ã³ã¹
* [DEMUXED](https://demuxed.com/) - [æåŸã®ïŒã€ã®ã€ãã³ããã¬ãŒã³ããŒã·ã§ã³ããã§ãã¯](https://www.youtube.com/channel/UCIc_DkRxo9UgUSTvWVNCmpA)ããããšãã§ããŸãã
# åèæç®
ããã«æé«ã®ã³ã³ãã³ãããããŸãããã®ããã¹ãã§èŠãããå
šãŠã¯ãããããæœåºãããããå
ã«ãªã£ãŠããããäœã圱é¿ãåããŠããŸãããã®é©ãã¹ããªã³ã¯ãæ¬ãåç»ãªã©ã§ãç¥èãããæ·±ãããããšãã§ããŸãã
ãªã³ã©ã€ã³ã³ãŒã¹ãšãã¥ãŒããªã¢ã«:
* 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/