ããã³ããšã³ãã§WebRTCçµ±èšã掻çšããæ¥ç¶å質ãç£èŠã»æ¹åããããã®å æ¬çã¬ã€ãããªã¢ã«ã¿ã€ã éä¿¡ã¢ããªã§åé¡ã蚺æãããŠãŒã¶ãŒäœéšãåäžãããæ¹æ³ãåŠã³ãŸãã
ããã³ããšã³ãWebRTCçµ±èšïŒæ¥ç¶å質ã®ã¢ãã¿ãªã³ã°
ãªã¢ã«ã¿ã€ã ã³ãã¥ãã±ãŒã·ã§ã³ïŒRTCïŒã¯ããããªäŒè°ããªã³ã©ã€ã³ã²ãŒã ããªã¢ãŒãã³ã©ãã¬ãŒã·ã§ã³ããŒã«ãªã©ãããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ãªãã®ãšãªã£ãŠããŸããWebRTCã¯ãã·ã³ãã«ãªAPIãä»ããŠãŠã§ããã©ãŠã¶ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«ãªã¢ã«ã¿ã€ã éä¿¡æ©èœãæäŸããç¡æã§ãªãŒãã³ãœãŒã¹ã®ãããžã§ã¯ãã§ããããã®æ©èœã®å€ããæ¯ããŠããŸããWebRTCã¢ããªã±ãŒã·ã§ã³ã§é«å質ãªãŠãŒã¶ãŒäœéšã確ä¿ããã«ã¯ãå ç¢ãªæ¥ç¶å質ã®ã¢ãã¿ãªã³ã°ãå¿ èŠã§ãããã®ããã°èšäºã§ã¯ãããã³ããšã³ãã§WebRTCçµ±èšã掻çšããŠæ¥ç¶å質ãçè§£ã蚺æãæ¹åããæ¹æ³ã«ã€ããŠè©³ãã説æããŸãã
WebRTCçµ±èšã®çè§£
WebRTCã¯ãæ¥ç¶ã®ããã©ãŒãã³ã¹ã«é¢ããæŽå¯ãæäŸããè±å¯ãªçµ±èšæ
å ±ãæäŸããŸãããããã®çµ±èšã¯RTCStatsReportãªããžã§ã¯ããéããŠã¢ã¯ã»ã¹ã§ããé³å£°ããããªããããã¯ãŒã¯ãã©ã³ã¹ããŒããªã©ãæ¥ç¶ã®ããŸããŸãªåŽé¢ã«é¢é£ãã倿§ãªã¡ããªã¯ã¹ãå«ãŸããŠããŸãããããã®ã¡ããªã¯ã¹ãçè§£ããããšã¯ãæœåšçãªåé¡ãç¹å®ãã察åŠããããã«äžå¯æ¬ ã§ãã
WebRTCçµ±èšãžã®ã¢ã¯ã»ã¹
WebRTCã®çµ±èšæ
å ±ã¯ãRTCPeerConnectionãªããžã§ã¯ããããã³RTCRtpSenderãRTCRtpReceiverãªããžã§ã¯ãã§å©çšå¯èœãªgetStats()ã¡ãœããã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸãããã®ã¡ãœããã¯ãRTCStatsReportãªããžã§ã¯ãã§è§£æ±ºãããPromiseãè¿ããŸãã
以äžã«ãJavaScriptã§WebRTCçµ±èšã«ã¢ã¯ã»ã¹ããæ¹æ³ã®åºæ¬çãªäŸã瀺ããŸãã
peerConnection.getStats().then(stats => {
stats.forEach(report => {
console.log(report);
});
});
RTCStatsReportã¯Mapã©ã€ã¯ãªãªããžã§ã¯ãã§ãåãšã³ããªãç¹å®ã®ã¬ããŒãã衚ããŸãããããã®ã¬ããŒãã¯ãpeer-connectionãdata-channelãinbound-rtpãoutbound-rtpãremote-inbound-rtpãremote-outbound-rtpãtransportãcodecãªã©ã®ç°ãªãã¿ã€ãã«åé¡ã§ããŸãã
æ¥ç¶å質ã¢ãã¿ãªã³ã°ã®ããã®äž»èŠã¡ããªã¯ã¹
RTCStatsReportå
ã®ããã€ãã®äž»èŠãªã¡ããªã¯ã¹ã¯ãæ¥ç¶å質ã®ã¢ãã¿ãªã³ã°ã«ç¹ã«åœ¹ç«ã¡ãŸãã
- ãžãã¿ãŒïŒ ãã±ããå°çæéã®å€åã衚ããŸãããžãã¿ãŒãé«ããšãé³å£°ããããªã®æªã¿ã«ã€ãªããå¯èœæ§ããããŸããç§åäœã§æž¬å®ãããŸãïŒ1000ãæãããšããªç§ã«ãªããŸãïŒã
- ãã±ãããã¹ïŒ éä¿¡äžã«å€±ããããã±ããã®æ°ã瀺ããŸããé«ããã±ãããã¹ã¯ãé³å£°ããããªã®åè³ªã«æ·±å»ãªåœ±é¿ãäžããŸããã€ã³ããŠã³ãã¹ããªãŒã ãšã¢ãŠãããŠã³ãã¹ããªãŒã ã«ã¯å¥ã ã®ã¡ããªã¯ã¹ãååšããŸãã
- ã©ãŠã³ãããªããã¿ã€ã ïŒRTTïŒïŒ ãã±ãããéä¿¡è ããåä¿¡è ã«ç§»åããæ»ã£ãŠãããŸã§ã«ãããæéãæž¬å®ããŸããé«ãRTTã¯é å»¶ãåŒãèµ·ãããŸããç§åäœã§æž¬å®ãããŸãïŒ1000ãæãããšããªç§ã«ãªããŸãïŒã
- éåä¿¡ãã€ãæ°ïŒ éåä¿¡ãããããŒã¿éãåæ ããŸãããããã¬ãŒãã®èšç®ã垯åå¹ ã®å¶éãç¹å®ããããã«äœ¿çšã§ããŸãã
- éåä¿¡ãã¬ãŒã æ°ïŒ éåä¿¡ããããããªãã¬ãŒã ã®æ°ã瀺ããŸãããã¬ãŒã ã¬ãŒãã¯ã¹ã ãŒãºãªãããªåçã«äžå¯æ¬ ã§ãã
- ã³ãŒããã¯ïŒ 䜿çšãããŠããé³å£°ããã³ãããªã³ãŒããã¯ãæå®ããŸããã³ãŒããã¯ããšã«ããã©ãŒãã³ã¹ç¹æ§ãç°ãªããŸãã
- ãã©ã³ã¹ããŒãïŒ åºç€ãšãªããã©ã³ã¹ããŒããããã³ã«ïŒäŸïŒUDP, TCPïŒãšæ¥ç¶ç¶æ ã«é¢ããæ å ±ãæäŸããŸãã
- å質å¶éã®çç±ïŒ ã¡ãã£ã¢ã¹ããªãŒã ã®å質ãå¶éãããŠããçç±ïŒäŸïŒãcpuãããbandwidthãããnoneãïŒã瀺ããŸãã
ããã³ããšã³ãã§ã®WebRTCçµ±èšã®åæ
WebRTCçµ±èšã«ã¢ã¯ã»ã¹ã§ããããæ¬¡ã®ã¹ãããã¯ããããåæããŠæœåšçãªåé¡ãç¹å®ããããšã§ããããã«ã¯ãããŒã¿ãåŠçããèŠèŠåãã¢ã©ãŒããéããŠæå³ã®ããæ¹æ³ã§æç€ºããããšãå«ãŸããŸãã
ããŒã¿åŠçãšéèš
WebRTCã®çµ±èšã¯éåžžãäžå®ééïŒäŸïŒ1ç§ããšïŒã§å ±åãããŸããããŒã¿ãçè§£ããããã«ã¯ãæéããããŠéèšããããšããã°ãã°å¿ èŠã§ããããã«ã¯ãå¹³åå€ãæå€§å€ãæå°å€ãæšæºåå·®ã®èšç®ãå«ãŸããŸãã
äŸãã°ã10ç§éã®å¹³åãžãã¿ãŒãèšç®ããã«ã¯ãæ¯ç§ãžãã¿ãŒå€ãåéãããã®å¹³åãèšç®ããŸãã
let jitterValues = [];
function collectStats() {
peerConnection.getStats().then(stats => {
stats.forEach(report => {
if (report.type === 'inbound-rtp' && report.kind === 'audio') {
jitterValues.push(report.jitter);
if (jitterValues.length > 10) {
jitterValues.shift(); // æåŸã®10åã®å€ã®ã¿ãä¿æ
}
let averageJitter = jitterValues.reduce((a, b) => a + b, 0) / jitterValues.length;
console.log('å¹³åãžãã¿ãŒïŒéå»10ç§éïŒ:', averageJitter);
}
});
setTimeout(collectStats, 1000); // 1ç§ããšã«çµ±èšãåé
});
}
collectStats();
èŠèŠåãšã¬ããŒã
WebRTCçµ±èšãèŠèŠåããããšã§ãæ¥ç¶å質ãããçŽæçã«çè§£ã§ããŸãããã£ãŒããã°ã©ãã¯ãçã®ããŒã¿ãèŠãã ãã§ã¯èŠéããŠããŸãå¯èœæ§ã®ããåŸåãç°åžžãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããäžè¬çãªèŠèŠåææ³ã«ã¯ä»¥äžã®ãããªãã®ããããŸãã
- æãç·ã°ã©ãïŒ ãžãã¿ãŒããã±ãããã¹ãRTTãªã©ã®ã¡ããªã¯ã¹ãæç³»åã§è¿œè·¡ããããã«äœ¿çšããŸãã
- æ£ã°ã©ãïŒ ç°ãªãã¹ããªãŒã ããŠãŒã¶ãŒéã§ã¡ããªã¯ã¹ãæ¯èŒããããã«äœ¿çšããŸãã
- ã²ãŒãžïŒ çŸåšã®å€ãšãããå€ã衚瀺ããããã«äœ¿çšããŸãã
Chart.jsãD3.jsãPlotly.jsãªã©ã®ã©ã€ãã©ãªã䜿çšããŠããã©ãŠã¶ã§ãããã®èŠèŠåãäœæã§ããŸããé害ã®ãããŠãŒã¶ãŒã«å¯Ÿå¿ããããã«ãã¢ã¯ã»ã·ããªãã£ãµããŒããåªããã©ã€ãã©ãªã®äœ¿çšãæ€èšããŠãã ããã
ã¢ã©ãŒããšãããå€
äºåã«å®çŸ©ããããããå€ã«åºã¥ããŠã¢ã©ãŒããèšå®ããããšã§ãæ¥ç¶å質ã®åé¡ãç©æ¥µçã«ç¹å®ãã察åŠããã®ã«åœ¹ç«ã¡ãŸããäŸãã°ããã±ãããã¹ãç¹å®ã®ããŒã»ã³ããŒãžãè¶ ããããRTTãç¹å®ã®å€ãè¶ ãããããå Žåã«ã¢ã©ãŒããããªã¬ãŒãããããã«èšå®ã§ããŸãã
const MAX_PACKET_LOSS = 0.05; // 5%ã®ãã±ãããã¹ãããå€
const MAX_RTT = 0.1; // 100msã®RTTãããå€
function checkConnectionQuality(stats) {
stats.forEach(report => {
if (report.type === 'inbound-rtp' && report.kind === 'audio') {
let packetLoss = report.packetsLost / report.packetsReceived;
if (packetLoss > MAX_PACKET_LOSS) {
console.warn('é«ããã±ãããã¹ãæ€åºãããŸãã:', packetLoss);
// ãŠãŒã¶ãŒã«ã¢ã©ãŒãã衚瀺ããããã€ãã³ãããµãŒããŒã«èšé²ããŸãã
}
}
if (report.type === 'peer-connection') {
let rtt = report.currentRoundTripTime;
if (rtt > MAX_RTT) {
console.warn('é«ãRTTãæ€åºãããŸãã:', rtt);
// ãŠãŒã¶ãŒã«ã¢ã©ãŒãã衚瀺ããããã€ãã³ãããµãŒããŒã«èšé²ããŸãã
}
}
});
}
peerConnection.getStats().then(checkConnectionQuality);
å®è·µäŸãšãŠãŒã¹ã±ãŒã¹
WebRTCçµ±èšãããŸããŸãªã·ããªãªã§æ¥ç¶åè³ªãæ¹åããããã«ã©ã®ããã«äœ¿çšã§ããããããã€ãã®å®è·µçãªäŸãèŠãŠã¿ãŸãããã
äŸ1ïŒãããªäŒè°ã¢ããªã±ãŒã·ã§ã³
ãããªäŒè°ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãWebRTCçµ±èšãç£èŠããããšã§ã以äžã®ãããªåé¡ãç¹å®ãã察åŠããã®ã«åœ¹ç«ã¡ãŸãã
- ãããªå質ã®äœäžïŒ é«ããã±ãããã¹ããžãã¿ãŒã¯ããã¯ã»ã«åããã¬ãŒã èœã¡ã«ã€ãªããå¯èœæ§ããããŸãããããã¯ãŒã¯ç¶æ³ã«å¿ããŠãããªãšã³ã³ãŒãã£ã³ã°èšå®ïŒè§£å床ããããã¬ãŒããäžãããªã©ïŒã調æŽããããšã§ããããç·©åã§ããŸãã
- é³å£°ã®é å»¶ïŒ é«ãRTTã¯ãé³å£°éä¿¡ã§é¡èãªé å»¶ãåŒãèµ·ããå¯èœæ§ããããŸãããšã³ãŒãã£ã³ã»ã¬ãŒã·ã§ã³ããžãã¿ãŒãããã¡ãªã³ã°ãªã©ã®æè¡ãå®è£ ããããšã§ãé³å£°å質ãåäžãããããšãã§ããŸãã
- ãããã¯ãŒã¯ã®èŒ»èŒ³ïŒ éåä¿¡ãã€ãæ°ãç£èŠããããšã§ããããã¯ãŒã¯ã®èŒ»èŒ³ãæ€åºã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã¯åž¯åå¹ ã®äœ¿çšéãæžãããããç¹å®ã®ã¹ããªãŒã ãåªå ãããããããšã§é©å¿ã§ããŸãã
ã·ããªãªïŒ æ±äº¬ã®ãŠãŒã¶ãŒãããã³ãã³ãšãã¥ãŒãšãŒã¯ã®ååãšã®é»è©±äŒè°äžã«æ åããã¯ã»ã«åããã®ãçµéšããŸããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã®ãããªã¹ããªãŒã ã§é«ããã±ãããã¹ãšãžãã¿ãŒãæ€åºããŸããã¢ããªã±ãŒã·ã§ã³ã¯èªåçã«ãããªã®è§£å床ãšãããã¬ãŒããäžãããŠãŒã¶ãŒã®ãããªå質ãšå šäœçãªäœéšãåäžãããŸãã
äŸ2ïŒãªã³ã©ã€ã³ã²ãŒã ã¢ããªã±ãŒã·ã§ã³
ãªã³ã©ã€ã³ã²ãŒã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã¹ã ãŒãºã§å¿çæ§ã®é«ãã²ãŒã äœéšã®ããã«äœé å»¶ãäžå¯æ¬ ã§ããWebRTCçµ±èšã䜿çšããŠRTTãç£èŠããæœåšçãªé å»¶åé¡ãç¹å®ã§ããŸãã
- é«é å»¶ïŒ é«ãRTTã¯ãã©ã°ãç¡åå¿ãªã²ãŒã ãã¬ã€ã«ã€ãªããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã«æ¥ç¶å質ã«é¢ãããã£ãŒãããã¯ãæäŸããæç·æ¥ç¶ãžã®åãæ¿ããä»ã®ãããã¯ãŒã¯ãå€çšããã¢ããªã±ãŒã·ã§ã³ã®çµäºãªã©ããã©ãã«ã·ã¥ãŒãã£ã³ã°ã®æé ãææ¡ã§ããŸãã
- äžå®å®ãªæ¥ç¶ïŒ RTTããã±ãããã¹ã®é »ç¹ãªå€åã¯ãã²ãŒã äœéšã劚ããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãåæ¹èª€ãèšæ£ïŒFECïŒãªã©ã®æè¡ãå®è£ ããŠããã±ãããã¹ã®åœ±é¿ãç·©åããæ¥ç¶ãå®å®ãããããšãã§ããŸãã
ã·ããªãªïŒ ãµã³ããŠãã®ã²ãŒããŒããªã³ã©ã€ã³ãã«ããã¬ã€ã€ãŒã²ãŒã äžã«ã©ã°ãçµéšããŸããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã¯ãé«ãRTTãšé »ç¹ãªãã±ãããã¹ãæ€åºããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒã«èŠåã¡ãã»ãŒãžã衚瀺ããã€ã³ã¿ãŒãããæ¥ç¶ã確èªããäžèŠãªã¢ããªã±ãŒã·ã§ã³ãéããããææ¡ããŸãããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãã±ãããã¹ãè£ãããã«FECãæå¹ã«ããæ¥ç¶ã®å®å®æ§ãåäžãããŸãã
äŸ3ïŒãªã¢ãŒãã³ã©ãã¬ãŒã·ã§ã³ããŒã«
ãªã¢ãŒãã³ã©ãã¬ãŒã·ã§ã³ããŒã«ã§ã¯ã广çãªããŒã ã¯ãŒã¯ã®ããã«ä¿¡é Œæ§ã®é«ãé³å£°ããã³ãããªéä¿¡ãäžå¯æ¬ ã§ããWebRTCçµ±èšã䜿çšããŠæ¥ç¶å質ãç£èŠãããŠãŒã¶ãŒãã·ãŒã ã¬ã¹ã«éä¿¡ã§ããããã«ããŸãã
- é³å£°ã®äžæïŒ é«ããã±ãããã¹ããžãã¿ãŒã¯ãé³å£°ã®äžæãåŒãèµ·ããããŠãŒã¶ãŒããäºããçè§£ããã®ãå°é£ã«ããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã¯ãç¡é³æå¶ãã³ã³ãã©ãŒããã€ãºçæãªã©ã®æè¡ãå®è£ ããŠãé³å£°å質ãåäžãããããšãã§ããŸãã
- ãããªã®ããªãŒãºïŒ äœããã¬ãŒã ã¬ãŒããé«ããã±ãããã¹ã¯ããããªã®ããªãŒãºãåŒãèµ·ããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã¯ããããªãšã³ã³ãŒãã£ã³ã°èšå®ãåçã«èª¿æŽããŠãã¹ã ãŒãºã§å®å®ãããããªã¹ããªãŒã ãç¶æã§ããŸãã
ã·ããªãªïŒ ã ã³ãã€ã®ããŒã ã¡ã³ããŒããªã¢ãŒãäŒè°äžã«é³å£°ã®äžæãçµéšããŸããããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã®ãªãŒãã£ãªã¹ããªãŒã ã§é«ããã±ãããã¹ãæ€åºããŸããã¢ããªã±ãŒã·ã§ã³ã¯èªåçã«ç¡é³æå¶ãšã³ã³ãã©ãŒããã€ãºçæãæå¹ã«ãããŠãŒã¶ãŒã®é³å£°å質ãåäžãããäŒè°ã«ãã广çã«åå ã§ããããã«ããŸãã
ããã³ããšã³ãWebRTCçµ±èšã¢ãã¿ãªã³ã°ã®ãã¹ããã©ã¯ãã£ã¹
以äžã«ãããã³ããšã³ãã§WebRTCçµ±èšã广çã«ç£èŠããããã®ãã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãã
- 宿çã«çµ±èšãåéããïŒ é »ç¹ãªããŒã¿åéã¯ãæ¥ç¶å質ã®ããæ£ç¢ºãªç¶æ³ãæäŸããŸããäžè¬çãªééã¯1ç§ããšã§ãã
- æéããããŠããŒã¿ãéèšããïŒ ããŒã¿ãéèšããããšã§ãå€åãå¹³æ»åããåŸåãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããå¹³åãæå€§ãæå°ãæšæºåå·®ã®èšç®ãæ€èšããŠãã ããã
- ããŒã¿ã广çã«èŠèŠåããïŒ ãã£ãŒããã°ã©ãã䜿çšããŠãããŒã¿ãæç¢ºã§çŽæçãªæ¹æ³ã§æç€ºããŸãã衚瀺ããããŒã¿ã®çš®é¡ã«é©ããèŠèŠåãéžæããŠãã ããã
- ã¢ã©ãŒããšãããå€ãèšå®ããïŒ æ¥ç¶å質ã¡ããªã¯ã¹ãäºåã«å®çŸ©ããããããå€ãè¶ ãããšãã«ããªã¬ãŒãããã¢ã©ãŒããèšå®ããŸããããã«ãããæœåšçãªåé¡ãç©æ¥µçã«ç¹å®ãã察åŠã§ããŸãã
- ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãèæ ®ããïŒ WebRTCçµ±èšãåéããã³ä¿åããéã¯ããŠãŒã¶ãŒã®ãã©ã€ãã·ãŒã«é æ ®ããŠãã ãããå¯èœãªå Žåã¯ããŒã¿ãå¿ååããå¿ èŠã«å¿ããŠãŠãŒã¶ãŒã®åæãåŸãŠãã ããã
- ãšã©ãŒãã³ããªã³ã°ãå®è£
ããïŒ ã³ãŒããæœåšçãªãšã©ãŒãé©åã«åŠçããããã«ããŠãã ãããäŸãã°ã
getStats()ã倱æããããç¡å¹ãªããŒã¿ãè¿ãããããã±ãŒã¹ãåŠçããŸãã - å
ç¢ãªçµ±èšåéã©ã€ãã©ãªã䜿çšããïŒ WebRTCçµ±èšã®åéãšåŠçãç°¡çŽ åãããªãŒãã³ãœãŒã¹ã©ã€ãã©ãªãããã€ããããŸããäŸãšããŠã¯
webrtc-statsãªã©ããããŸãã - QoEïŒäœæå質ïŒã«çŠç¹ãåœãŠãïŒ æè¡çãªã¡ããªã¯ã¹ãéèŠã§ãããæçµçãªç®æšã¯ãŠãŒã¶ãŒã®äœéšãåäžãããããšã§ããçµ±èšããŠãŒã¶ãŒããã®äž»èгçãªãã£ãŒãããã¯ãšé¢é£ä»ããæ¥ç¶å質ãã¢ããªã±ãŒã·ã§ã³ã®èªèã«ã©ã®ããã«åœ±é¿ããããçè§£ããŸãã
- ããŸããŸãªãããã¯ãŒã¯ç¶æ³ã«é©å¿ããïŒ WebRTCçµ±èšã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãããŸããŸãªãããã¯ãŒã¯ç¶æ³ã«åçã«é©å¿ãããããšãã§ããŸããäŸãã°ããããªãšã³ã³ãŒãã£ã³ã°èšå®ã調æŽããããç¹å®ã®ã¹ããªãŒã ãåªå ãããããšã©ãŒè𿣿è¡ãå®è£ ãããã§ããŸãã
- ãã¹ããšæ€èšŒïŒ çµ±èšã¢ãã¿ãªã³ã°ã®å®è£ ã培åºçã«ãã¹ãããæ£ç¢ºã§ä¿¡é Œæ§ãé«ãããšã確èªããŸããã¢ã©ãŒããæ£ããããªã¬ãŒãããã¢ããªã±ãŒã·ã§ã³ãããŸããŸãªãããã¯ãŒã¯ç¶æ³ã«é©åã«é©å¿ããããšãæ€èšŒããŸãããã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠãRTCçµ±èšãšãããã¯ãŒã¯ãã©ãã£ãã¯ãæ€æ»ããŸãã
é«åºŠãªãããã¯
ã«ã¹ã¿ã çµ±èšãšã¡ããªã¯ã¹
æšæºã®WebRTCçµ±èšã«å ããŠãã«ã¹ã¿ã ã®çµ±èšãã¡ããªã¯ã¹ãåéããããšãã§ããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³åºæã®æ å ±ã远跡ããããWebRTCçµ±èšãä»ã®ããŒã¿ãœãŒã¹ãšé¢é£ä»ãããããã®ã«åœ¹ç«ã¡ãŸãã
äŸãã°ãæ¥ç¶åè³ªãæªããŠãŒã¶ãŒã®æ°ããé話ã®å¹³åæéã远跡ãããå ŽåããããããããŸããããã®ããŒã¿ãåéããWebRTCçµ±èšãšé¢é£ä»ããããšã§ããŠãŒã¶ãŒäœéšã®ããå æ¬çãªçè§£ãåŸãããšãã§ããŸãã
ãªã¢ã«ã¿ã€ã é©å¿ãšå¶åŸ¡
WebRTCçµ±èšã䜿çšããŠããªã¢ã«ã¿ã€ã ã®é©å¿ããã³å¶åŸ¡ã¡ã«ããºã ãå®è£ ã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã¯ãããã¯ãŒã¯ç¶æ³ã«åºã¥ããŠåçã«ãã®åäœã調æŽã§ããŸãã
äŸãã°ãã¢ããªã±ãŒã·ã§ã³ãé«ããã±ãããã¹ãæ€åºããå Žåãå®å®æ§ãåäžãããããã«ãããªã®è§£å床ããããã¬ãŒããäžããããšãã§ããŸãããããã¯ãã¢ããªã±ãŒã·ã§ã³ãé«ãRTTãæ€åºããå ŽåãFECã®ãããªæè¡ãå®è£ ããŠé å»¶ãæžããããšãã§ããŸãã
ããã¯ãšã³ãã·ã¹ãã ãšã®çµ±å
ããã³ããšã³ãã§åéãããWebRTCçµ±èšã¯ãåæãšã¬ããŒãã®ããã«ããã¯ãšã³ãã·ã¹ãã ã«éä¿¡ã§ããŸããããã«ããããŠãŒã¶ãŒããŒã¹å šäœã«ãããæ¥ç¶å質ã®ããå æ¬çãªãã¥ãŒãåŸãããšãã§ããŸãã
äŸãã°ããã¹ãŠã®ãŠãŒã¶ãŒããWebRTCçµ±èšãåéããåæã®ããã«äžå€®ãµãŒããŒã«éä¿¡ããããšãã§ããŸããããã«ããããŠãŒã¶ãŒãäžè²«ããŠæ¥ç¶å質ã®äœäžãçµéšããŠããå°åãªã©ãåŸåããã¿ãŒã³ãç¹å®ã§ããŸãããã®æ å ±ã䜿çšããŠããããã¯ãŒã¯ã€ã³ãã©ãæé©åãããããããã®å°åã®ãŠãŒã¶ãŒã«ããè¯ããµããŒããæäŸãããã§ããŸãã
çµè«
ããã³ããšã³ãã§WebRTCçµ±èšãç£èŠããããšã¯ããªã¢ã«ã¿ã€ã éä¿¡ã¢ããªã±ãŒã·ã§ã³ã§é«å質ãªãŠãŒã¶ãŒäœéšã確ä¿ããããã«äžå¯æ¬ ã§ããäž»èŠãªã¡ããªã¯ã¹ãçè§£ããããŒã¿ã广çã«åæãããã¹ããã©ã¯ãã£ã¹ãå®è£ ããããšã§ãæ¥ç¶å質ã®åé¡ãç©æ¥µçã«ç¹å®ã»å¯ŸåŠãããŠãŒã¶ãŒã«ãšã£ãŠããã·ãŒã ã¬ã¹ã§æ¥œããäœéšã«ã€ãªããããšãã§ããŸãããªã¢ã«ã¿ã€ã ããŒã¿ã®åãæŽ»çšããWebRTCã¢ããªã±ãŒã·ã§ã³ã®å¯èœæ§ãæå€§éã«åŒãåºããŸãããã