WebCodecs VideoEncoder ã®ããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ããšã³ã³ãŒãé床åæãæé©åæè¡ãã¯ãã¹ãã©ãããã©ãŒã ã®èæ ®äºé ã«çŠç¹ãåœãŠã詳现ã¬ã€ãã
WebCodecs VideoEncoder ããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ïŒãšã³ã³ãŒãé床åæ
WebCodecs API ã¯ããã©ãŠã¶å
ã§çŽæ¥ã³ãŒããã¯ãžã®äœã¬ãã«ã¢ã¯ã»ã¹ãæäŸãããŠã§ãããŒã¹ã®ã¡ãã£ã¢åŠçã«ãããŠéèŠãªé²æ©ãéããŠããŸããããã«ããããšã³ã³ãŒãããã³ãã³ãŒãããã»ã¹ã«å¯Ÿããå¶åŸ¡ãåäžãããªã¢ã«ã¿ã€ã ãããªã¢ããªã±ãŒã·ã§ã³ãé«åºŠãªã¹ããªãŒãã³ã°ãœãªã¥ãŒã·ã§ã³ãªã©ã®å¯èœæ§ãåºãããŸããããããWebCodecs ã®æœåšèœåãæå€§éã«åŒãåºãã«ã¯ããã®ããã©ãŒãã³ã¹ç¹æ§ãç¹ã« VideoEncoder ã€ã³ã¿ãŒãã§ã€ã¹ã®ãšã³ã³ãŒãé床ãååã«çè§£ããå¿
èŠããããŸãããã®èšäºã§ã¯ãVideoEncoder ããã©ãŒãã³ã¹ã®ãããã¡ã€ãªã³ã°ããšã³ã³ãŒãé床ã®åæãããã³æœåšçãªããã«ããã¯ã®ç¹å®ã«çŠç¹ãåœãŠãå
æ¬çãªã¬ã€ããæäŸããŸãã
ãšã³ã³ãŒãé床ã®éèŠæ§ã®çè§£
ãšã³ã³ãŒãé床ã¯ãå€ãã®å Žåãã¬ãŒã /ç§ïŒFPSïŒã§æž¬å®ããããããããããªãšã³ã³ãŒãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠãªææšã§ããããã¯çŽæ¥ä»¥äžã«åœ±é¿ããŸãã
- ãªã¢ã«ã¿ã€ã ããã©ãŒãã³ã¹ïŒ ãããªäŒè°ãã©ã€ãã¹ããªãŒãã³ã°ãã€ã³ã¿ã©ã¯ãã£ãã²ãŒã ãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãé å»¶ãæå°éã«æããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã確ä¿ããããã«ãªã¢ã«ã¿ã€ã ãšã³ã³ãŒããå¿ èŠã§ãã
- å¹çïŒ ãšã³ã³ãŒãé床ãéãã»ã©ããããªã³ã³ãã³ãã®åŠçã«å¿ èŠãªæéãççž®ãããèšç®ãªãœãŒã¹ãšãšãã«ã®ãŒãç¯çŽãããŸããããã¯ããµãŒããŒãµã€ãã®ãããªåŠçãã¢ãã€ã«ããã€ã¹ã§ã¯ç¹ã«éèŠã§ãã
- ã¹ã±ãŒã©ããªãã£ïŒ å¹ççãªãšã³ã³ãŒãã«ãããããå€ãã®ãããªã¹ããªãŒã ãåæã«åŠçã§ããããã«ãªãããããªãã©ãããã©ãŒã ãšãµãŒãã¹ã® Сã±ã€ã©ããªãã£ãåäžããŸãã
ãšã³ã³ãŒãé床ã«åœ±é¿ãäžããäž»èŠå
VideoEncoder ã®ãšã³ã³ãŒãé床ã«ã¯ãããã€ãã®èŠå ã圱é¿ãäžããå¯èœæ§ããããŸãããããã®èŠå ãçè§£ããããšã¯ã广çãªããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ãšæé©åã«äžå¯æ¬ ã§ãã
1. ã³ãŒããã¯ã®éžæ
ã³ãŒããã¯ïŒäŸïŒVP9ãAV1ãH.264ïŒã®éžæã¯ããšã³ã³ãŒãé床ã«å€§ããªåœ±é¿ãäžããŸããAV1 ã®ãããªæ°ããã³ãŒããã¯ã¯ãäžè¬çã«å§çž®å¹çãé«ãã§ãããå€ãã®å Žåãèšç®è€é床ãå¢å ãããšãã代åã䌎ãããšã³ã³ãŒãé床ãé ããªããŸããH.264 ã¯ãããæçããã³ãŒããã¯ã§ãããéåžžã¯é«éã§ãããåãã¬ãã«ã®å§çž®ãæäŸããªãå ŽåããããŸããVP9 ã¯ãå§çž®ãšé床ã®ãã©ã³ã¹ãåããŠãããå€ãã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã§äººæ°ã®ããéžæè¢ãšãªã£ãŠããŸãã
äŸïŒ AV1 ã䜿çšã㊠720p ã®ãããªããšã³ã³ãŒãããå ŽåãåãããŒããŠã§ã¢ã§ H.264 ã䜿çšããŠåããããªããšã³ã³ãŒãããå Žåããããã¯ããã«æéããããå¯èœæ§ããããŸããã³ãŒããã¯ãéžæããéã¯ãã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®ããã€ã¹ã®èœåãšãããã¯ãŒã¯æ¡ä»¶ãèæ ®ããŠãã ããã
2. ãšã³ã³ãŒããã©ã¡ãŒã¿
ãããã¬ãŒããè§£å床ããã¬ãŒã ã¬ãŒãããšã³ã³ãŒããããã¡ã€ã«ãªã©ã®ãšã³ã³ãŒããã©ã¡ãŒã¿ã¯ããšã³ã³ãŒãããã»ã¹ã®è€éãã«çŽæ¥åœ±é¿ããŸãããããã¬ãŒããè§£å床ãé«ãã»ã©ãããå€ãã®èšç®èœåãå¿ èŠã«ãªãããšã³ã³ãŒãé床ãé ããªããŸãã
äŸïŒ ãããã¬ãŒãã 5 Mbps ãã 3 Mbps ã«äžãããšããšã³ã³ãŒãé床ãå€§å¹ ã«åäžããå¯èœæ§ããããŸããããããªå質ã¯ãããã«äœäžããå¯èœæ§ããããŸããåæ§ã«ãè§£å床ã 1080p ãã 720p ã«ããŠã³ãµã€ãžã³ã°ããããšãããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
3. ããŒããŠã§ã¢æ©èœ
CPUãGPUãå©çšå¯èœãªã¡ã¢ãªãªã©ã®åºç€ãšãªãããŒããŠã§ã¢ã¯ããšã³ã³ãŒãããã©ãŒãã³ã¹ã«ãããŠéèŠãªåœ¹å²ãæãããŸãããã«ãã³ã¢ãåããææ°ã® CPU ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³æ©èœãåãã GPU ã¯ããšã³ã³ãŒãããã»ã¹ãå€§å¹ ã«é«éåã§ããŸãã
äŸïŒ ãããªãšã³ã³ãŒãçšã®å°çš GPU ãåãããµãŒããŒã¯ãCPU ããŒã¹ã®ãšã³ã³ãŒãã®ã¿ã«äŸåãããµãŒããŒããããã¯ããã«å€ãã®åæãããªã¹ããªãŒã ãåŠçã§ããŸãã
4. ãã©ãŠã¶ã®å®è£
ãã©ãŠã¶ã«ãã£ãŠ WebCodecs API ã®å®è£ ãç°ãªãå Žåãããããšã³ã³ãŒãããã©ãŒãã³ã¹ã«ã°ãã€ããçããŸãããã©ãŠã¶ã® JavaScript ãšã³ãžã³ãã¡ã¢ãªç®¡çãããã³åºç€ãšãªãã³ãŒããã¯ã®å®è£ ãªã©ã®èŠå ãããã¹ãŠãšã³ã³ãŒãé床ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
äŸïŒ WebCodecs ã®å®è£ ã®éãã«ãããChromeãFirefoxãSafari éã§ãšã³ã³ãŒãããã©ãŒãã³ã¹ããããã«ç°ãªãå ŽåããããŸããã¢ããªã±ãŒã·ã§ã³ããã¹ãŠã®ãã©ãŠã¶ã§äžè²«ããããã©ãŒãã³ã¹ãçºæ®ããããã«ãããŸããŸãªãã©ãŠã¶ã§ãã¹ãããããšãéèŠã§ãã
5. ã³ã³ãã³ãã®è€éã
ãããªã³ã³ãã³ãèªäœã®è€éããããšã³ã³ãŒãé床ã«åœ±é¿ãäžããå¯èœæ§ããããŸããåãã®éããè€éãªãã¯ã¹ãã£ãé »ç¹ãªã·ãŒã³ãã§ã³ãžãå«ããããªã¯ãéçãªã·ãŒã³ãšåãã®å°ãªããããªãããå€ãã®åŠçèœåãå¿ èŠãšããŸãã
äŸïŒ éãã¢ã¯ã·ã§ã³æ ç»ããšã³ã³ãŒãããå Žåãéåžžãæå°éã®å€æŽããã鿢ç»é¢é²ç»ããšã³ã³ãŒãããå ŽåãããæéãããããŸãã
VideoEncoder ããã©ãŒãã³ã¹ã®ãããã¡ã€ãªã³ã°
VideoEncoder ã®ãããã¡ã€ãªã³ã°ã«ã¯ãããŸããŸãªæ¡ä»¶äžã§ãã®ããã©ãŒãã³ã¹ã枬å®ããæœåšçãªããã«ããã¯ãç¹å®ããããšãå«ãŸããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ã®äœç³»çãªã¢ãããŒãã®æŠèŠã説æããŸãã
1. ãããã¡ã€ãªã³ã°ç°å¢ã®ã»ããã¢ãã
ãããã¡ã€ãªã³ã°ãéå§ããåã«ãæ£ç¢ºã§åçŸå¯èœãªçµæã確ä¿ããããã«ãå¶åŸ¡ãããç°å¢ãã»ããã¢ããããããšãéèŠã§ããããã«ã¯ä»¥äžãå«ãŸããŸãã
- 代衚çãªãã¹ããããªã®éžæïŒ ã¢ããªã±ãŒã·ã§ã³ãåŠçããå žåçãªã³ã³ãã³ãã衚ããããªãéžæããŸããããŸããŸãªè€éãã®ã¬ãã«ãæã€è€æ°ã®ãã¹ããããªã䜿çšããããšãæ€èšããŠãã ããã
- äžè²«ãããšã³ã³ãŒããã©ã¡ãŒã¿ã®èšå®ïŒ ãã¹ãŠã®ãã¹ãã§äœ¿çšãããšã³ã³ãŒããã©ã¡ãŒã¿ïŒã³ãŒããã¯ããããã¬ãŒããè§£å床ããã¬ãŒã ã¬ãŒããªã©ïŒã®ã»ãããå®çŸ©ããŸãã
- ãšã³ã³ãŒãããã»ã¹ã®åé¢ïŒ å¹²æžãé¿ããããã«ããããã¡ã€ãªã³ã°äžã«ã·ã¹ãã ã§å®è¡ãããŠããä»ã® CPU è² è·ã®é«ãã¿ã¹ã¯ãæå°éã«æããŸãã
- ããã©ãŒãã³ã¹ç£èŠããŒã«ã®äœ¿çšïŒ CPU 䜿çšçãã¡ã¢ãªæ¶è²»éãããã³ãã®ä»ã®é¢é£ã¡ããªã¯ã¹ã远跡ããããã«ããã©ãŠã¶ã®éçºè ããŒã«ïŒäŸïŒChrome DevTools ããã©ãŒãã³ã¹ããã«ïŒãŸãã¯ã·ã¹ãã ç£èŠããŒã«ãå©çšããŸãã
2. ãšã³ã³ãŒãéåºŠã®æž¬å®
ããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ã®äž»èŠãªææšã¯ããã¬ãŒã /ç§ïŒFPSïŒã§æž¬å®ããããšã³ã³ãŒãé床ã§ããããã¯ãæå®ãããæ°ã®ãã¬ãŒã ããšã³ã³ãŒãããã®ã«ãããæéãæž¬å®ããããšã«ãã£ãŠèšç®ã§ããŸãã
äŸ JavaScript ã³ãŒãïŒ
async function encodeFrames(encoder, frames) {
const startTime = performance.now();
for (const frame of frames) {
encoder.encode(frame);
}
await encoder.flush();
const endTime = performance.now();
const elapsedTime = endTime - startTime;
const fps = frames.length / (elapsedTime / 1000);
return fps;
}
ãã®ã³ãŒãã¹ããããã¯ãVideoEncoder ã䜿çšããŠäžé£ã®ãã¬ãŒã ããšã³ã³ãŒãããã®ã«ãããæéãæž¬å®ããçµæãšããŠåŸããã FPS ãèšç®ããŸãããšã©ãŒãåŠçãããšã³ã³ãŒããŒã®é©åãªåæåãšèšå®ã確å®ã«è¡ãããšãå¿ããªãã§ãã ããã
3. ããã«ããã¯ã®ç¹å®
ãšã³ã³ãŒãéåºŠãæž¬å®ããããæ¬¡ã®ã¹ãããã¯ããã©ãŒãã³ã¹ãå¶éããŠããæœåšçãªããã«ããã¯ãç¹å®ããããšã§ããäžè¬çãªããã«ããã¯ã«ã¯ä»¥äžãå«ãŸããŸãã
- CPU ããã«ããã¯ïŒ ãšã³ã³ãŒãäžã®é«ã CPU 䜿çšçã¯ãCPU ããšã³ã³ãŒãããã»ã¹ã«è¿œãã€ãã®ã«èŠåŽããŠããããšã瀺ããŸããããã¯ãèšç®è² è·ã®é«ãã³ãŒããã¯ãé«è§£å床ããŸãã¯éå¹ççãªãšã³ã³ãŒãã¢ã«ãŽãªãºã ã«ãã£ãŠåŒãèµ·ããããå¯èœæ§ããããŸãã
- GPU ããã«ããã¯ïŒ GPU ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã«äœ¿çšãããŠããå Žåãé«ã GPU 䜿çšçã¯ãGPU ãå¶éèŠå ã§ããããšã瀺åããŠããŸããããã¯ãè€éãªãšã³ã³ãŒããã©ã¡ãŒã¿ãŸãã¯äžåå㪠GPU ãªãœãŒã¹ã«ãã£ãŠåŒãèµ·ããããå¯èœæ§ããããŸãã
- ã¡ã¢ãªããã«ããã¯ïŒ éå°ãªã¡ã¢ãªäœ¿çšéã¯ãã¡ã¢ãªã®ã¹ã¯ããã³ã°ãšã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«ããããã©ãŒãã³ã¹ã®äœäžã«ã€ãªããå¯èœæ§ããããŸããããã¯ã倧ããªãã¬ãŒã ãµã€ãºãŸãã¯ãšã³ã³ãŒããŒå®è£ ã«ãããéå¹ççãªã¡ã¢ãªç®¡çã«ãã£ãŠåŒãèµ·ããããå¯èœæ§ããããŸãã
- JavaScript ããã«ããã¯ïŒ éå¹çç㪠JavaScript ã³ãŒãããšã³ã³ãŒãé床ã«åœ±é¿ãäžããå¯èœæ§ããããŸããç¹ã«ããšã³ã³ãŒãããã»ã¹ã«è€éãªååŠçãŸãã¯åŸåŠçã¹ããããå«ãŸããå Žåã§ãã
ãã©ãŠã¶ã®éçºè ããŒã«ãã·ã¹ãã ç£èŠããŒã«ã䜿çšããŠãCPU 䜿çšçãGPU 䜿çšçãã¡ã¢ãªæ¶è²»éãããã³ JavaScript å®è¡æéã調ã¹ãããšã«ããããããã®ããã«ããã¯ãç¹å®ããŸãã
4. ããŸããŸãªã³ãŒããã¯ã§ã®ãšã³ã³ãŒãããã©ãŒãã³ã¹ã®åæ
éèŠãªã¹ãããã¯ãããŸããŸãªã³ãŒããã¯ïŒH.264ãVP9ãAV1ïŒå šäœã§ã®ããã©ãŒãã³ã¹ããã³ãããŒã¯ããããšã§ããããã«ããããšã³ã³ãŒãé床ãšå§çž®å¹çããã³å質ã®ãã©ã³ã¹ãåããªãããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«æé©ãªã³ãŒããã¯ã決å®ã§ããŸãã
ãã³ãããŒã¯ã®èæ ®äºé ïŒ
- SSIMïŒæ§é çé¡äŒŒæ§ææ°ïŒïŒ å ã®ãããªãã¬ãŒã ãšãšã³ã³ãŒãããããããªãã¬ãŒã ãšã®éã®ç¥èŠå質ã®éããæž¬å®ããŸããSSIM å€ãé«ãã»ã©ãå質ã®ç¶æãè¯ãããšã瀺ããŸãã
- VMAFïŒVideo Multi-Method Assessment FusionïŒïŒ ç¥èŠãããªå質ã«åœ±é¿ãäžããããŸããŸãªèŠå ãèæ ®ãããããé«åºŠãªã¡ããªãã¯ã§ãã
- ãã¡ã€ã«ãµã€ãºïŒ ããŸããŸãªã³ãŒããã¯ãšãã©ã¡ãŒã¿ã§ãšã³ã³ãŒããããåããããªã®resulting ãã¡ã€ã«ãµã€ãºãæ¯èŒããŸãã
äŸïŒ H.264 ã¯æãé«éãªãšã³ã³ãŒãé床ãæäŸããŸãããVP9 ããããã¡ã€ã«ãµã€ãºã倧ãããå質ãäœãçµæã«ãªãããšãããããŸããAV1 ã¯æé«ã®å§çž®å¹çãæäŸãããããããŸãããããšã³ã³ãŒãé床ã¯å€§å¹ ã«äœäžããŸããã¢ããªã±ãŒã·ã§ã³ã®èŠä»¶ã«æãããé©åããã³ãŒããã¯ãéžæããŠãã ããã
ãšã³ã³ãŒãéåºŠãæ¹åããããã®æé©åæè¡
ããã«ããã¯ãç¹å®ãããããšã³ã³ãŒãéåºŠãæ¹åããããã«ããŸããŸãªæé©åæè¡ãé©çšã§ããŸãã
1. ãšã³ã³ãŒããã©ã¡ãŒã¿ã®èª¿æŽ
é床ãšåè³ªã®æé©ãªãã©ã³ã¹ãèŠã€ããããã«ãããŸããŸãªãšã³ã³ãŒããã©ã¡ãŒã¿ã詊ããŠãã ãããããã©ãŒãã³ã¹ãæžå¿µãããå Žåã¯ããããã¬ãŒããè§£å床ããŸãã¯ãã¬ãŒã ã¬ãŒããäžããããšãæ€èšããŠãã ããã
äŸïŒ
- ã¢ãããã£ããããã¬ãŒãã¹ããªãŒãã³ã°ïŒABRïŒïŒ ãŠãŒã¶ãŒã®ãããã¯ãŒã¯æ¡ä»¶ã«åºã¥ããŠãããã¬ãŒããåçã«èª¿æŽããããã« ABR ãå®è£ ããŸããããã«ããã垯åå¹ ãå¶éãããŠããå Žåã§ãã¹ã ãŒãºãªåçãç¶æã§ããŸãã
- ã³ã³ãã³ãèªèãšã³ã³ãŒãïŒ ãããªã³ã³ãã³ãã®è€éãã«åºã¥ããŠãšã³ã³ãŒããã©ã¡ãŒã¿ã調æŽããŸããããšãã°ãéçãªã·ãŒã³ã«ã¯äœããããã¬ãŒãããåãã®éãã·ãŒã³ã«ã¯é«ããããã¬ãŒãã䜿çšããŸãã
2. ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®æŽ»çš
éžæããã³ãŒããã¯ã§ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãæå¹ã«ãªã£ãŠããããšã確èªããŠãã ãããã»ãšãã©ã®ææ°ãã©ãŠã¶ã¯ãH.264 ã VP9 ãªã©ã®äžè¬çãªã³ãŒããã¯ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ããµããŒãããŠããŸãã
äŸïŒ VideoEncoderConfig ãªããžã§ã¯ãã® hardwareAcceleration èšå®ã䜿çšããŠãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšãããã©ãããæå®ã§ããŸãããã ãããã©ãŠã¶ã¯ããã®æ©èœãšã·ã¹ãã æ§æã«åºã¥ããŠããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšãããã©ãããæçµçã«æ±ºå®ããŸãã
3. JavaScript ã³ãŒãã®æé©å
JavaScript ã³ãŒããããã«ããã¯ã«å¯äžããŠããå Žåã¯ã次ã®ããã«æé©åããŠãã ããã
- äžèŠãªèšç®ã®åæžïŒ ç¡é§ãªèšç®ãæäœãåé¿ããŸãã
- å¹ççãªããŒã¿æ§é ã®äœ¿çšïŒ ãããªããŒã¿ãæ ŒçŽããã³åŠçããããã«é©åãªããŒã¿æ§é ãéžæããŸãã
- ã¡ã¢ãªå²ãåœãŠã®æå°åïŒ ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ãªãŒããŒããããæå°éã«æããããã«ãã¡ã¢ãªå²ãåœãŠã®åæ°ãæžãããŸãã
- Web Worker ãžã®ã¿ã¹ã¯ãªãããŒãïŒ èšç®è² è·ã®é«ãã¿ã¹ã¯ã Web Worker ã«ç§»åããŠãã¡ã€ã³ã¹ã¬ããã®ãããã¯ãåé¿ããå¿çæ§ãåäžãããŸãã
4. WebAssemblyïŒWasmïŒã®å©çš
è€éãªãããªåŠçã¿ã¹ã¯ã®å Žåã¯ãããã©ãŒãã³ã¹ãåäžãããããã« WebAssemblyïŒWasmïŒã®äœ¿çšãæ€èšããŠãã ãããWasm ã䜿çšãããšããã©ãŠã¶ã§ãã€ãã£ãã³ãŒããå®è¡ã§ããèšç®è² è·ã®é«ãæäœãå€§å¹ ã«é«éåã§ããŸãã
äŸïŒ C++ ã䜿çšããŠã«ã¹ã¿ã ãããªãã£ã«ã¿ãŒãŸãã¯ãšã³ã³ãŒãã¢ã«ãŽãªãºã ãå®è£ ããããã©ãŒãã³ã¹åäžã®ããã« Wasm ã«ã³ã³ãã€ã«ããŸãã
5. é©åãªãšã³ã³ãŒããŒå®è£ ã®éžæ
WebCodecs API ã¯æšæºåãããã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãããåºç€ãšãªããšã³ã³ãŒããŒå®è£ ã¯ç°ãªãå ŽåããããŸããäžéšã®ãšã³ã³ãŒããŒã¯ãä»ã®ãšã³ã³ãŒããŒãããéåºŠã«æé©åãããŠããå ŽåããããŸãã
èæ ®äºé ïŒ
- ãã©ãŠã¶åºæã®æé©åïŒ ããŸããŸãªãã©ãŠã¶ã§ã¢ããªã±ãŒã·ã§ã³ããã¹ãããŠãéžæããã³ãŒããã¯ã«å¯ŸããŠããããã®ãã©ãŠã¶ãå€§å¹ ã«åªãããšã³ã³ãŒãããã©ãŒãã³ã¹ãæäŸãããã©ããã確èªããŸãã
- ãœãããŠã§ã¢å¯ŸããŒããŠã§ã¢ãšã³ã³ãŒããŒïŒ ããŒããŠã§ã¢ãšã³ã³ãŒããŒãå©çšã§ããªãããæé©ã«åäœããªãå Žåã¯ãããŸããŸãªãœãããŠã§ã¢ãšã³ã³ãŒããŒå®è£ ãæ€èšããŠãã ããã
ã¯ãã¹ãã©ãããã©ãŒã ã®èæ ®äºé
ããŒããŠã§ã¢æ©èœãšãã©ãŠã¶å®è£ ã®éãã«ããããšã³ã³ãŒãé床ã¯ããŸããŸãªãã©ãããã©ãŒã ïŒãã¹ã¯ããããã¢ãã€ã«ãçµã¿èŸŒã¿ããã€ã¹ïŒã§å€§ããç°ãªãå ŽåããããŸãããããªãšã³ã³ãŒãã¢ããªã±ãŒã·ã§ã³ãèšèšããéã«ã¯ããããã®ã¯ãã¹ãã©ãããã©ãŒã ã®éããèæ ®ããããšãéèŠã§ãã
æšå¥šäºé ïŒ
- ã¢ãããã£ããšã³ã³ãŒãã£ã³ã°ïŒ ã¿ãŒã²ãããã©ãããã©ãŒã ã®æ©èœã«åºã¥ããŠãšã³ã³ãŒããã©ã¡ãŒã¿ã調æŽããããã«ãã¢ãããã£ããšã³ã³ãŒãã£ã³ã°ãå®è£ ããŸãã
- ãã©ãããã©ãŒã åºæã®æé©åïŒ åãã©ãããã©ãŒã ã§ããã©ãŒãã³ã¹ãæå€§åããããã«ããã©ãããã©ãŒã åºæã®æé©åãé©çšããããšãæ€èšããŠãã ããã
- 宿©ã§ã®ãã¹ãïŒ ããŸããŸãªå®æ©ã§ã¢ããªã±ãŒã·ã§ã³ããã¹ãããŠãããŸããŸãªãã©ãããã©ãŒã ã§äžè²«ããããã©ãŒãã³ã¹ã確ä¿ããŸãã
å®äŸ
ãããã®ååãããŸããŸãªå®äžçã®ã·ããªãªã«ã©ã®ããã«é©çšããããã調ã¹ãŠã¿ãŸãããã
1. ãããªäŒè°ã¢ããªã±ãŒã·ã§ã³
ãããªäŒè°ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãäœé å»¶ãæåªå äºé ã§ãããããªå質ãç ç²ã«ããŠãããšã³ã³ãŒãé床ãåªå ããŸããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãåãã H.264 ã¯ãå€ãã®å Žåè¯ãéžæã§ããã¢ãããã£ããããã¬ãŒãã¹ããªãŒãã³ã°ã¯ãããŸããŸãªãããã¯ãŒã¯æ¡ä»¶äžã§ã¹ã ãŒãºãªãšã¯ã¹ããªãšã³ã¹ãç¶æããã®ã«åœ¹ç«ã¡ãŸãããšã³ã³ãŒãæéãããã«ççž®ããããã«ãããäœãè§£å床ïŒäŸïŒ720p ãŸã㯠480pïŒã®äœ¿çšãæ€èšããŠãã ããã
2. ã©ã€ãã¹ããªãŒãã³ã°ãã©ãããã©ãŒã
ã©ã€ãã¹ããªãŒãã³ã°ã§ã¯ããšã³ã³ãŒãé床ãšãããªå質ã®ãã©ã³ã¹ãåããŸããVP9 ã¯è¯ããã©ã³ã¹ãæäŸã§ããŸããããŸããŸãªåž¯åå¹ ãæã€ããŸããŸãªèŠèŽè ã«å¯Ÿå¿ããããã«ãã¢ãããã£ããããã¬ãŒãã¹ããªãŒãã³ã°ãäžå¯æ¬ ã§ãããµãŒããŒãè² è·ãåŠçã§ããããšãä¿èšŒããããã«ãCPU ãš GPU ã®äœ¿çšçãæ³šææ·±ãç£èŠããŠãã ããã
3. ãããªç·šéã¢ããªã±ãŒã·ã§ã³
ãããªç·šéã¢ããªã±ãŒã·ã§ã³ã§ã¯ããšã³ã³ãŒãé床ã¯äŸç¶ãšããŠéèŠã§ãããå質ãåªå ãããããšããããããŸããããŸããŸãªã³ãŒããã¯ãšãšã³ã³ãŒããã©ã¡ãŒã¿ã詊ããŠãæé©ãªãã¬ãŒããªããèŠã€ããŠãã ãããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãš WebAssembly ãæŽ»çšããŠãè€éãªãããªåŠçã¿ã¹ã¯ãé«éåããŸãã
4. ã¢ãã€ã«ãããªé²ç»
ã¢ãã€ã«ããã€ã¹ã§ã¯ãããããªãŒå¯¿åœãéèŠãªèæ ®äºé ã§ãã蚱容ã§ãããããªå質ãç¶æããªãããé»åå¹çãæé©åããŸããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããã¢ãã€ã«ããã€ã¹ã«æé©åãããã³ãŒããã¯ãéžæããŸããã¢ãããã£ããšã³ã³ãŒãã£ã³ã°ã¯ããããã¯ãŒã¯æ¡ä»¶ãæªãå Žåã«ãããã¬ãŒããäžããããšã§ãæ¶è²»é»åãåæžããã®ã«åœ¹ç«ã¡ãŸãã
å°æ¥ã®ãã¬ã³ã
ãããªãšã³ã³ãŒãã£ã³ã°ã®åéã¯ãæ°ããã³ãŒããã¯ãšãã¯ãããžãŒã宿çã«ç»å Žããåžžã«é²åããŠããŸããææ°ã®é²æ©ãåžžã«ææ°ã®ç¶æ ã«ä¿ã¡ãå¯èœãªéãæé«ã®ããã©ãŒãã³ã¹ã掻çšããŠãã ããã
æ°èãã¬ã³ãïŒ
- AV1 ã®æ¡çšïŒ AV1 ã®ããŒããŠã§ã¢ãµããŒããæ®åããã«ã€ããŠããŠã§ãããŒã¹ã®ãããªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠãŸããŸãé åçãªéžæè¢ã«ãªãã§ãããã
- AI æèŒãšã³ã³ãŒãã£ã³ã°ïŒ 人工ç¥èœïŒAIïŒã¯ããšã³ã³ãŒããã©ã¡ãŒã¿ãæé©åããå§çž®å¹çãåäžãããããã«äœ¿çšãããŠããŸãã
- ã¯ã©ãŠãããŒã¹ã®ãšã³ã³ãŒãã£ã³ã°ïŒ ã¯ã©ãŠãããŒã¹ã®ãšã³ã³ãŒãã£ã³ã°ãµãŒãã¹ã¯ããããªåŠçã®ããã®ã¹ã±ãŒã©ãã«ã§ã³ã¹ãå¹çã®é«ããœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
çµè«
VideoEncoder ããã©ãŒãã³ã¹ã®ãããã¡ã€ãªã³ã°ãšãšã³ã³ãŒãé床ã®åæã¯ãå¹ççã§å¿çæ§ã®é«ããŠã§ãããŒã¹ã®ãããªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ãããšã³ã³ãŒãé床ã«åœ±é¿ãäžããäž»èŠå ãçè§£ããæœåšçãªããã«ããã¯ãç¹å®ããé©åãªæé©åæè¡ãé©çšããããšã«ãããWebCodecs ã®å¯èœæ§ãæå€§éã«åŒãåºãããŠãŒã¶ãŒã«é«å質ãªãããªãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸããã¯ãã¹ãã©ãããã©ãŒã ã®éããèæ
®ãããããªãšã³ã³ãŒãã£ã³ã°æè¡ã®ææ°ã®é²æ©ãåžžã«ææ°ã®ç¶æ
ã«ä¿ã€ããšãå¿ããªãã§ãã ããã
ãã®å
æ¬çãªã¬ã€ãã§ã¯ãVideoEncoder ããã©ãŒãã³ã¹ã广çã«ãããã¡ã€ãªã³ã°ããã³æé©åããããã«å¿
èŠãªç¥èãšããŒã«ãæäŸããŸããããšã³ã³ãŒãããã»ã¹ãç¶ç¶çã«ç£èŠããã³æ¹åããããšã«ããããããªã¢ããªã±ãŒã·ã§ã³ãããŠãŒã¶ãŒã®å Žæã«é¢ä¿ãªããã¹ã ãŒãºã§å¹ççã§æ¥œãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãä¿èšŒã§ããŸãã