WebCodecsãšã³ã³ãŒããŒèšå®ã®è©³çްãªè§£èª¬ã倿§ãªã°ããŒãã«ç°å¢ã«ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã§ãå¹ççãã€é«å質ãªã¡ãã£ã¢ãšã³ã³ãŒãã£ã³ã°ãå®çŸããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®èœåãæ¢ããŸãã
WebCodecsãšã³ã³ãŒããŒèšå®ïŒããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã«ããã¡ãã£ã¢ãšã³ã³ãŒãã£ã³ã°ã®ç䟡ãåŒãåºã
WebCodecs APIã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãã¡ãã£ã¢ãæ±ãæ¹æ³ã«é©åœããããããŠããŸãããã©ãŠã¶ã®ã³ãŒããã¯ãžã®äœã¬ãã«ã¢ã¯ã»ã¹ãæäŸããããšã§ã以åã¯ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã«éå®ãããŠããå¯èœæ§ãè§£ãæŸã¡ãŸããWebCodecsã®æãéèŠãªå©ç¹ã®äžã€ã¯ããšã³ã³ãŒãã£ã³ã°ã«ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã掻çšã§ããããšã§ãããããã«ããå€§å¹ ãªããã©ãŒãã³ã¹åäžãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®æ¹åãå®çŸããŸãããã®èšäºã§ã¯ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãšããããã°ããŒãã«ãªã³ã³ããã¹ãã§ã®ã¡ãã£ã¢ãšã³ã³ãŒãã£ã³ã°ã«äžãã圱é¿ã«çŠç¹ãåœãŠãWebCodecsãšã³ã³ãŒããŒã®èšå®ã«é¢ããå æ¬çãªã¬ã€ããæäŸããŸãã
WebCodecsãšãã®éèŠæ§ã®çè§£
WebCodecsã¯ããŠã§ãéçºè ããã©ãŠã¶å ã®ã¡ãã£ã¢ã³ãŒããã¯ã«çŽæ¥ã¢ã¯ã»ã¹ããæäœã§ããããã«ããææ°ã®JavaScript APIã§ããWebCodecs以åã¯ããŠã§ãããŒã¹ã®ã¡ãã£ã¢åŠçã¯ã©ã€ãã©ãªããµãŒããŒãµã€ãã®ãœãªã¥ãŒã·ã§ã³ã«å€§ããäŸåããŠããããã°ãã°ããã©ãŒãã³ã¹ã®ããã«ããã¯ãé å»¶ã®å¢å ãåŒãèµ·ãããŠããŸãããWebCodecsã¯ããã©ãŠã¶ã§çŽæ¥ãªãŒãã£ãªããã³ãããªã¹ããªãŒã ããšã³ã³ãŒãã»ãã³ãŒãããããã®æšæºåãããå¹ççãªæ¹æ³ãæäŸããããšã§ãããã®å¶éã«å¯ŸåŠããæ¬¡ã®ãããªé«åºŠãªã¢ããªã±ãŒã·ã§ã³ãžã®æãéããŸãã
- ãªã¢ã«ã¿ã€ã ã³ãã¥ãã±ãŒã·ã§ã³ (RTC): ãããªäŒè°ãã©ã€ãã¹ããªãŒãã³ã°ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããŸããã°ããŒãã«ãªããŒã ããŠã§ãããŒã¹ã®ãããªäŒè°ããŒã«ã䜿çšããŠããå Žé¢ãæ³åããŠã¿ãŠãã ãããWebCodecsã¯ããŠãŒã¶ãŒã®å ŽæãããŒããŠã§ã¢ã®èœåã«é¢ä¿ãªããã¹ã ãŒãºã§å¹ççãªã³ãã¥ãã±ãŒã·ã§ã³ãä¿èšŒããŸãã
- åç»ç·šéãšãã©ã³ã¹ã³ãŒãã£ã³ã°: è€éãªåç»ç·šéããã©ã³ã¹ã³ãŒãã£ã³ã°ã¿ã¹ã¯ããã©ãŠã¶ã§çŽæ¥å¯èœã«ãããµãŒããŒãµã€ãåŠçãžã®äŸåãæžãããŸããããã«ãããäžçäžã®ãŠãŒã¶ãŒãå°éçãªãœãããŠã§ã¢ãå¿ èŠãšããã«åç»ãäœæã»ç·šéã§ããããã«ãªããŸãã
- ã²ãŒã ã¹ããªãŒãã³ã°: ã²ãŒã ã¹ããªãŒãã³ã°ãã©ãããã©ãŒã åãã®äœé å»¶ãšã³ã³ãŒãã£ã³ã°ã§ãäžçäžã®ãã¬ã€ã€ãŒã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
- ã¡ãã£ã¢é²ç»: ãŠã§ãã«ã¡ã©ããã€ã¯ããã®ãªãŒãã£ãªããã³ãããªã¹ããªãŒã ãå¹ççã«é²ç»ããç»é¢é²ç»ããããªããã°ãªã©ã®æ©èœãå¯èœã«ããŸãã
ãã®APIã¯ãæè»ãã€æ¡åŒµå¯èœã«èšèšãããŠãããå¹ åºãã³ãŒããã¯ããµããŒãããéçºè ãæé©ãªããã©ãŒãã³ã¹ãšå質ã®ããã«ãšã³ã³ãŒãã£ã³ã°ãã©ã¡ãŒã¿ã埮調æŽã§ããããã«ããŸãããã®æè»æ§ã¯ãæ§ã ãªãããã¯ãŒã¯æ¡ä»¶ãããã€ã¹èœåãæã€ã°ããŒãã«ãªèŠèŽè ã«ãµãŒãã¹ãæäŸããäžã§äžå¯æ¬ ã§ãã
ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®å
ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ãWebCodecsã®ããã³ã·ã£ã«ãæå€§éã«åŒãåºãéµã§ãããšã³ã³ãŒãã£ã³ã°ããã³ãŒãã£ã³ã°ãšãã£ãèšç®è² è·ã®é«ãã¿ã¹ã¯ããCPUããGPUãå°çšã®ãããªãšã³ã³ãŒããŒãªã©ã®å°çšããŒããŠã§ã¢ã³ã³ããŒãã³ãã«ãªãããŒãããŸããããã«ãããããã€ãã®å©ç¹ãããããããŸãã
- ããã©ãŒãã³ã¹ã®åäž: ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ãšã³ã³ãŒãã£ã³ã°æéãå€§å¹ ã«ççž®ããã¡ãã£ã¢ã¹ããªãŒã ã®ããé«éãªåŠçãå¯èœã«ããŸããããã¯ãäœé å»¶ãéèŠãªãªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠç¹ã«éèŠã§ããäŸãã°ã1080pã®ãããªããœãããŠã§ã¢ãšã³ã³ãŒãã£ã³ã°ã§ãšã³ã³ãŒãããã«ã¯æ°ç§ããããããããŸããããããŒããŠã§ã¢ãšã³ã³ãŒãã£ã³ã°ã§ã¯åãçµæãããªç§åäœã§éæã§ããå¯èœæ§ããããŸãã
- CPU䜿çšçã®åæž: åŠçãå°çšããŒããŠã§ã¢ã«ãªãããŒãããããšã§ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯CPUãä»ã®ã¿ã¹ã¯ã®ããã«è§£æŸããã·ã¹ãã å šäœã®å¿çæ§ãåäžãããŸããããã¯ãäžçäžã§åºã䜿çšãããŠããæºåž¯é»è©±ãã¿ãã¬ããã®ãããªãªãœãŒã¹ã«å¶çŽã®ããããã€ã¹ã«ãšã£ãŠéåžžã«éèŠã§ãã
- é»åå¹çã®åäž: ããŒããŠã§ã¢ãšã³ã³ãŒããŒã¯ããœãããŠã§ã¢ãšã³ã³ãŒããŒãããé»åå¹çãé«ãããšãå€ããã¢ãã€ã«ããã€ã¹ã®ããããªãŒå¯¿åœãå»¶ã°ããŸããããã¯ãä¿¡é Œã§ãã黿ºãžã®ã¢ã¯ã»ã¹ãéãããŠããå°åã®ãŠãŒã¶ãŒã«ãšã£ãŠå€§ããªå©ç¹ã§ãã
- å質ã®åäž: ããŒããŠã§ã¢ãšã³ã³ãŒããŒã¯ãåããããã¬ãŒãã§ãœãããŠã§ã¢ãšã³ã³ãŒããŒãšæ¯èŒããŠãããè¯ããããªå質ãéæã§ããããšããããããŸãã
ããããããŒããŠã§ã¢ãšã³ã³ãŒããŒã®å¯çšæ§ãšèœåã¯ãããã€ã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã©ãŠã¶ã«ãã£ãŠç°ãªããŸãããããã®å¶éãçè§£ããããã«å¿ããŠã¢ããªã±ãŒã·ã§ã³ãèšèšããããšãäžå¯æ¬ ã§ãã
ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®ããã®WebCodecsãšã³ã³ãŒããŒã®èšå®
WebCodecsã§ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã掻çšããã«ã¯ããšã³ã³ãŒããŒãæ£ããèšå®ããå¿ èŠããããŸããå ·äœçãªèšå®ãªãã·ã§ã³ã¯ã䜿çšããŠããã³ãŒããã¯ãšãã©ãŠã¶ã®æ©èœã«ãã£ãŠç°ãªããŸãã以äžã«ãäž»èŠãªæé ãšèæ ®äºé ã解説ããŸãã
1. ã³ãŒããã¯ã®éžæ
WebCodecsã¯ãVP8ãVP9ãAV1ãH.264ãªã©ãããŸããŸãªã³ãŒããã¯ããµããŒãããŠããŸããã³ãŒããã¯ã®éžæã¯ãäºææ§ãå質ãã©ã€ã»ã³ã¹ãªã©ãç¹å®ã®èŠä»¶ã«ãã£ãŠæ±ºãŸããŸããå¹ åºãäºææ§ã®ããã«ã¯H.264ãè¯ãéžæãšãªãããšãå€ãã§ãããVP9ãAV1ã®ãããªæ°ããã³ãŒããã¯ã¯ãåããããã¬ãŒãã§ããåªããå§çž®å¹çãšå質ãæäŸããŸããããã€ã¹ã®ãµããŒãã«ãããå°ççãªå·®ç°ãèæ ®ããŠãã ãããäŸãã°ãäžéšã®å°åã§æ®åããŠããå€ãããã€ã¹ã¯H.264ãããµããŒãããŠããªãå ŽåããããŸãã
äŸ (JavaScript):
const codec = 'avc1.42E01E'; // H.264 Baseline Profile
const codec = 'vp9'; // VP9 Codec
2. ã³ãŒããã¯ãµããŒãã®ç¢ºèª
ãšã³ã³ãŒããŒãäœæããåã«ãç®çã®ã³ãŒããã¯ããã©ãŠã¶ã§ãµããŒããããŠãããããŸãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå©çšå¯èœãã©ããã確èªããå¿ èŠããããŸãã`MediaRecorder.isTypeSupported()`ã¡ãœããã䜿çšããŠã³ãŒããã¯ã®ãµããŒãã確èªããŸãããããã¯åçŽåããããã§ãã¯ã§ãããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãä¿èšŒãããã®ã§ã¯ãããŸããã
äŸ (JavaScript):
if (MediaRecorder.isTypeSupported('video/webm; codecs="vp9"')) {
console.log('VP9 is supported!');
} else {
console.log('VP9 is not supported.');
}
3. VideoEncoderèšå®ã®äœæ
`VideoEncoder`ã³ã³ã¹ãã©ã¯ã¿ã¯ãç®çã®ãšã³ã³ãŒãã£ã³ã°ãã©ã¡ãŒã¿ãæå®ããèšå®ãªããžã§ã¯ããåãåããŸããããã§ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããããã©ããã«åœ±é¿ãäžããããšãã§ããŸããäž»èŠãªãã©ã¡ãŒã¿ã¯ä»¥äžã®éãã§ãã
- codec: 䜿çšããã³ãŒããã¯ïŒäŸ: H.264ã®å Žåã¯'avc1.42E01E'ïŒã
- width: ãããªã®å¹ ïŒãã¯ã»ã«åäœïŒã
- height: ãããªã®é«ãïŒãã¯ã»ã«åäœïŒã
- bitrate: ã¿ãŒã²ãããããã¬ãŒãïŒããã/ç§ïŒããããã¬ãŒãã調æŽãããšãå質ãšãã¡ã€ã«ãµã€ãºã«åœ±é¿ããŸãããããã¬ãŒããé«ãã»ã©å質ã¯åäžããŸããããã¡ã€ã«ãµã€ãºã¯å€§ãããªããŸãããããã¬ãŒããéžæããéã¯ãç°ãªãå°åã®ãããã¯ãŒã¯åž¯åå¹ ã®å¶éãèæ ®ããŠãã ããã
- framerate: 1ç§ãããã®ãã¬ãŒã æ°ã
- hardwareAcceleration: (éæšæºããã©ãŠã¶åºæ) äžéšã®ãã©ãŠã¶ã§ã¯ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãæç€ºçã«èŠæ±ããããã®éæšæºãªãã·ã§ã³ãæäŸãããå ŽåããããŸããããã¯ãã©ãŠã¶ã«å€§ããäŸåããä¿¡é Œã§ããªãå¯èœæ§ããããŸãã
- optimizationProfile: (ã³ãŒããã¯åºæ) H.264ã®ãããªäžéšã®ã³ãŒããã¯ã¯ãæé©åãããã¡ã€ã«ïŒäŸ: baseline, main, highïŒãæäŸããŸããbaselineãããã¡ã€ã«ã¯æãåºããµããŒããããŠãããããŒãšã³ãããã€ã¹ã«é©ããŠããããšãå€ãã§ãã
äŸ (JavaScript):
const encoderConfig = {
codec: 'avc1.42E01E', // H.264 Baseline
width: 1280,
height: 720,
bitrate: 2000000, // 2 Mbps
framerate: 30,
//hardwareAcceleration: "prefer-hardware", // ãã©ãŠã¶åºæã§ãããåäœã¯ä¿èšŒãããŸãã
avc: { format: 'annexb' }
};
4. ãšã³ã³ãŒããŒèšå®ã®ç£èŠ
ãšã³ã³ãŒããŒãäœæããåŸããã®èšå®ã調ã¹ãŠããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšãããŠãããã©ããã倿ã§ããŸããããããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãã¢ã¯ãã£ããã©ãããçŽæ¥ã¯ãšãªããæšæºåãããæ¹æ³ã¯ãããŸãããæ¬¡ã®ãããªéæ¥çãªææšã«é Œãå¿ èŠããããŸãã
- ããã©ãŒãã³ã¹ã¢ãã¿ãªã³ã°: CPU䜿çšçãšãšã³ã³ãŒãã£ã³ã°æéãç£èŠããŸããCPU䜿çšçãäœãããšã³ã³ãŒãã£ã³ã°ãé«éã§ããã°ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšãããŠããå¯èœæ§ãé«ãã§ãã
- ãã©ãŠã¶åºæã®ããŒã«: äžéšã®ãã©ãŠã¶ã¯ãç¹å®ã®ã³ãŒããã¯ã§ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãæå¹ã«ãªã£ãŠãããã©ããã瀺ãéçºè ããŒã«ãæäŸããŠããŸãã
5. ãšã©ãŒãšãã©ãŒã«ããã¯ã®åŠç
ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå©çšã§ããªãå Žåããç®çã®ã³ãŒããã¯ããµããŒããããŠããªãå Žåã«åããŠãæœåšçãªãšã©ãŒãåŠçãããã©ãŒã«ããã¯ã¡ã«ããºã ãæäŸããããšãéèŠã§ããããã«ã¯ä»¥äžã®ãããªãã®ãå«ãŸããŸãã
- å¥ã®ã³ãŒããã¯ãžã®ãã©ãŒã«ããã¯: æšå¥šãããã³ãŒããã¯ããµããŒããããŠããªãå ŽåãH.264ã®ãããªããåºããµããŒããããŠããã³ãŒããã¯ã詊ããŸãã
- ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®ç¡å¹å: ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãåé¡ãåŒãèµ·ãããŠããå Žåã¯ããããç¡å¹ã«ããŠãœãããŠã§ã¢ãšã³ã³ãŒããŒã䜿çšããŠã¿ãããšãã§ããŸãããã ããããã«ããããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ãé«ãã§ãã
- ãšã©ãŒã¡ãã»ãŒãžã®è¡šç€º: ã³ãŒããã¯ã®ãµããŒããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®æ¬ åŠã«ããã¢ããªã±ãŒã·ã§ã³ãã¡ãã£ã¢ããšã³ã³ãŒãã§ããªãå ŽåããŠãŒã¶ãŒã«éç¥ããŸãã
ã³ãŒããã¯åºæã®èæ ®äºé
WebCodecsãšã³ã³ãŒããŒã®èšå®ãªãã·ã§ã³ãšåäœã¯ã䜿çšããã³ãŒããã¯ã«ãã£ãŠå€§ããç°ãªãå ŽåããããŸãã以äžã«ããã€ãã®ã³ãŒããã¯åºæã®èæ ®äºé ã瀺ããŸãã
H.264
H.264ã¯åºããµããŒããããŠããã³ãŒããã¯ã§ãããå¹ åºãäºææ§ã®ããã®è¯ãéžæè¢ã§ããBaselineãMainãHighãªã©ã®ããã€ãã®ãããã¡ã€ã«ããµããŒãããŠããŸããBaselineãããã¡ã€ã«ã¯æãåºããµããŒããããŠãããããŒãšã³ãããã€ã¹ã«æšå¥šãããããšãå€ãã§ããH.264ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ãã»ãšãã©ã®çŸä»£ã®ããã€ã¹ã§äžè¬çã«ååã«ãµããŒããããŠããŸãããã ããäžéšã®å€ãããã€ã¹ããã©ãŠã¶ã§ã¯ãœãããŠã§ã¢ãšã³ã³ãŒãã£ã³ã°ãããµããŒãããŠããªãå ŽåããããŸãã
äŸã®èšå® (JavaScript):
const encoderConfig = {
codec: 'avc1.42E01E', // H.264 Baseline Profile
width: 640,
height: 480,
bitrate: 1000000,
framerate: 30,
avc: { format: 'annexb' }
};
VP9
VP9ã¯Googleã«ãã£ãŠéçºããããã€ã€ãªãã£ããªãŒã®ã³ãŒããã¯ã§ããH.264ãããåªããå§çž®å¹çãæäŸããåããããã¬ãŒãã§ããå°ããªãã¡ã€ã«ãµã€ãºãšåäžããå質ãå®çŸããŸããVP9ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ãŸããŸãäžè¬çã«ãªã£ãŠããŸããããã¹ãŠã®ããã€ã¹ããã©ãŠã¶ãç¹ã«å€ããã®ã§ã¯å©çšã§ããªãå ŽåããããŸããVP9ã¯ãå§çž®çãé«ããããããŒã¿ã³ã¹ããé«ãåœã«ãšã£ãŠçŽ æŽãããéžæè¢ã§ããH.264ãšäžŠè¡ããŠVP9ããªãã·ã§ã³ãšããŠæäŸããããšãæ€èšããŠãã ããã
äŸã®èšå® (JavaScript):
const encoderConfig = {
codec: 'vp9',
width: 640,
height: 480,
bitrate: 1000000,
framerate: 30
};
AV1
AV1ã¯ãAlliance for Open Media (AOMedia) ã«ãã£ãŠéçºãããæ¬¡äžä»£ã®ãã€ã€ãªãã£ããªãŒã³ãŒããã¯ã§ããVP9ãããããã«åªããå§çž®å¹çãæäŸãã垯åå¹ èŠä»¶ãå€§å¹ ã«åæžããå¯èœæ§ããããŸããAV1ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ãŸã æ¯èŒçæ°ããã§ãããæ°ããããã€ã¹ããã©ãŠã¶ã§ãŸããŸãå©çšå¯èœã«ãªã£ãŠããŸããã¢ããªã±ãŒã·ã§ã³ãå°æ¥ã«ããã£ãŠå¯Ÿå¿ãããããã«ã¯ãAV1ãæ€èšããŠãã ããããã ãããµããŒãã¯ãŸã æ®éçã§ã¯ãªãããšã«æ³šæããŠãã ããã
äŸã®èšå® (JavaScript):
const encoderConfig = {
codec: 'av01.0.00M.08',
width: 640,
height: 480,
bitrate: 1000000,
framerate: 30
};
ã°ããŒãã«ãªWebCodecså±éã®ããã®ãã¹ããã©ã¯ãã£ã¹
WebCodecsã¢ããªã±ãŒã·ã§ã³ãã°ããŒãã«ãªèŠèŽè ã«å±éããéã«ã¯ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããããšãéèŠã§ãã
- ã¢ãããã£ããããã¬ãŒãã¹ããªãŒãã³ã° (ABS): ãŠãŒã¶ãŒã®ãããã¯ãŒã¯ç¶æ³ã«åºã¥ããŠãããªå質ãåçã«èª¿æŽããããã«ABSãå®è£ ããŸããããã«ããã垯åå¹ ãå€åããŠãã¹ã ãŒãºãªèŠèŽäœéšãä¿èšŒãããŸããMPEG-DASHãHLSãªã©ã®ãµãŒãã¹ã¯ããããªã®ã»ã°ã¡ã³ãããšã³ã³ãŒãããããã«WebCodecsã䜿çšããããšãããäžè¬çãªABSæè¡ã§ãã
- ã³ãŒããã¯ããŽã·ãšãŒã·ã§ã³: ã¯ã©ã€ã¢ã³ãã®ããã€ã¹ãšãã©ãŠã¶ã®èœåã«åºã¥ããŠã³ãŒããã¯ãããŽã·ãšãŒãããã¡ã«ããºã ãå®è£ ããŸããè€æ°ã®ã³ãŒããã¯ãªãã·ã§ã³ïŒäŸïŒH.264ãVP9ãAV1ïŒãæäŸããã¯ã©ã€ã¢ã³ãã®ãµããŒãã«åºã¥ããŠæé©ãªãã®ãéžæããŸãã
- å°ååºæã®èæ ®äºé : ããã€ã¹ã®äœ¿çšç¶æ³ããããã¯ãŒã¯ã€ã³ãã©ãèŠå¶èŠä»¶ã«ãããå°åå·®ãèªèããŸããåå°åã®ç¹å®ã®ããŒãºã«åãããŠã¢ããªã±ãŒã·ã§ã³ãæé©åããŸãã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ (CDN): CDNã䜿çšããŠãäžçäžã«é 眮ããããµãŒããŒã«ã¡ãã£ã¢ã³ã³ãã³ããé ä¿¡ããŸããããã«ãããé å»¶ãæžå°ããç°ãªãå°ççãªå Žæã«ããèŠèŽè ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããŸãã
- ã¢ã¯ã»ã·ããªãã£: ãã£ãã·ã§ã³ãåå¹ãé³å£°è§£èª¬ãæäŸããããšã§ãé害ãæã€ãŠãŒã¶ãŒãã¡ãã£ã¢ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
- ããã€ã¹ãšãã©ãŠã¶éã§ã®ãã¹ã: äºææ§ãšæé©ãªããã©ãŒãã³ã¹ã確ä¿ããããã«ãå¹ åºãããã€ã¹ãšãã©ãŠã¶ã§ã¢ããªã±ãŒã·ã§ã³ã培åºçã«ãã¹ãããŸãããã©ãŠã¶ãããã€ã¹ã«ãã£ãŠããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®ãµããŒãã¬ãã«ãç°ãªãå ŽåããããŸãã
- ã¢ãã¿ãªã³ã°ãšåæ: ãšã³ã³ãŒãã£ã³ã°æéãCPU䜿çšçããšã©ãŒçãªã©ã®ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã远跡ããããã®ã¢ãã¿ãªã³ã°ãšåæãå®è£ ããŸãããã®ããŒã¿ã¯ãæé©åã®é åãç¹å®ããåé¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããã®ã«åœ¹ç«ã¡ãŸãã
- ãŠãŒã¶ãŒæè²: å Žåã«ãã£ãŠã¯ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ããµããŒãããç¹å®ã®ãã©ãŠã¶ãããã€ã¹ã䜿çšããå©ç¹ã«ã€ããŠãŠãŒã¶ãŒãæè²ããããšã圹ç«ã€ããšããããŸãã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
WebCodecsã䜿çšããéã«ã¯ãæœåšçãªã»ãã¥ãªãã£ãªã¹ã¯ãèªèãããããã軜æžããããã®æªçœ®ãè¬ããããšãéèŠã§ããããã€ãã®äž»èŠãªèæ ®äºé ã¯æ¬¡ã®ãšããã§ãã
- å ¥åæ€èšŒ: æªæã®ããã³ãŒãã®æ³šå ¥ãé²ãããã«ããã¹ãŠã®å ¥åããŒã¿ãæ€èšŒããŸãã
- ãµãã¿ã€ãº: ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒæ»æãé²ãããã«ããã¹ãŠã®åºåããŒã¿ããµãã¿ã€ãºããŸãã
- ã»ãã¥ã¢ãªè»¢é: HTTPSã䜿çšããŠãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãã¹ãŠã®éä¿¡ãæå·åããŸãã
- 宿çãªæŽæ°: ãã©ãŠã¶ãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãææ°ã®ã»ãã¥ãªãã£ãããã§ææ°ã®ç¶æ ã«ä¿ã¡ãŸãã
- ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒ (CSP): CSPã䜿çšããŠããã©ãŠã¶ããªãœãŒã¹ãèªã¿èŸŒãããœãŒã¹ãå¶éããŸãã
WebCodecsãšããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã®æªæ¥
WebCodecs APIã¯çµ¶ããé²åããŠãããå°æ¥çã«ã¯ããã©ãŒãã³ã¹ãšæ©èœãããã«åäžããããšãæåŸ ãããŸããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ããŠã§ãäžã§é«åºŠãªã¡ãã£ã¢ã¢ããªã±ãŒã·ã§ã³ãå®çŸããäžã§åŒãç¶ãéèŠãªåœ¹å²ãæãããŸããå°æ¥ã®æœåšçãªéçºã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãµããŒãã®åäž: ããŒããŠã§ã¢ãšã³ã³ãŒããŒããã匷åã«ãªããåºãå©çšå¯èœã«ãªãã«ã€ããŠãããåºç¯ãªããã€ã¹ããã©ãŠã¶ã§ããè¯ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãµããŒããæåŸ ãããŸãã
- æ°ããã³ãŒããã¯: VVC (Versatile Video Coding) ã®ããã«ãããã«åªããå§çž®å¹çãšå質ãæã€æ°ããã³ãŒããã¯ãç»å Žãç¶ããã§ãããã
- é«åºŠãªãšã³ã³ãŒãã£ã³ã°æ©èœ: WebCodecsã¯æçµçã«ãã¹ã±ãŒã©ãã«ãããªã³ãŒãã£ã³ã° (SVC) ããã€ãã€ãããã¯ã¬ã³ãž (HDR) ãããªãªã©ã®ããé«åºŠãªãšã³ã³ãŒãã£ã³ã°æ©èœããµããŒãããå¯èœæ§ããããŸãã
- WebAssemblyãšã®çµ±å: WebAssemblyã䜿çšããŠããã©ãŠã¶ã§å¹ççã«å®è¡ã§ããã«ã¹ã¿ã ã³ãŒããã¯ããšã³ã³ãŒãã£ã³ã°ã¢ã«ãŽãªãºã ãå®è£ ããããšãã§ããŸãã
çµè«
WebCodecsã¯ãããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãšçµã¿åãããããšã§ããŠã§ãããŒã¹ã®ã¡ãã£ã¢åŠçã«ããã倧ããªåé²ã衚ããŠããŸãããã®èšäºã§æŠèª¬ããèšå®ãªãã·ã§ã³ãšãã¹ããã©ã¯ãã£ã¹ãçè§£ããããšã§ãéçºè ã¯WebCodecsã®ããã³ã·ã£ã«ãæå€§éã«åŒãåºããã°ããŒãã«ãªèŠèŽè ã«å±ããããšãã§ãã髿§èœã§æ©èœè±å¯ãªã¡ãã£ã¢ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãããªã¢ã«ã¿ã€ã ã³ãã¥ãã±ãŒã·ã§ã³ã®åŒ·åããé«åºŠãªãããªç·šéã®å®çŸãŸã§ãWebCodecsã¯ãŠã§ãäžã§ã®ã¡ãã£ã¢ãšã®é¢ããæ¹ãå€é©ããŠããŸããå Žæãããã€ã¹ã«é¢ãããããã¹ãŠã®ãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ãªäœéšãæäŸããããã«ã倿§ãªã°ããŒãã«ãªç¶æ³ã§ãã¹ããšæé©åãè¡ãããšãå¿ããªãã§ãã ããã