Habrã®ãªãŒãã³ã¹ããŒã¹ã§ã¯ãWebRTCãã¯ãããžãŒã«é¢ããèšäºããŸããŸãå ¬éãããŠãããWebRTCãã¯ãããžãŒã®äœ¿çšãéå§ããæ¹æ³ã«é¢ããããã€ãã®åªããèšäºãæ¢ã«æžãããŠããŸãïŒäŸïŒ one ã two ïŒã
ãã®èšäºã§ã¯ãWebRTCããã³Bitrixãã¯ãããžãŒã䜿çšããŠãç¬èªã®ãã«ãã¡ãã£ã¢Webã¢ããªã±ãŒã·ã§ã³ãäœæããæ¹æ³ã説æããŸãã
ãã¯ãããžãŒã«ã€ããŠå°ã
WebRTCãã¯ãããžãŒã¯æ¯èŒçæè¿ç»å Žãã2012幎11æã«æåã®ãã©ãããçºè¡šãããŸãããæåéã1幎ã§ããã®ãã¯ãããžãŒã¯è¯å¥œãªã¬ãã«ã«éãã䜿çšã§ããã¯ãã§ãã
ãã®ãã¯ãããžãŒã¯ãè¿œå ã®ãã©ã°ã€ã³ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããå¿ èŠãªããéçºè ã«ãã«ãã¡ãã£ã¢Webã¢ããªã±ãŒã·ã§ã³ïŒãããª/ãªãŒãã£ãªã³ãŒã«ïŒãäœæããæ©äŒãæäŸããŸãã
ãã®ç®æšã¯ãä»»æã®ãã©ãŠã¶ããã³ä»»æã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§åäœãããªã¢ã«ã¿ã€ã éä¿¡çšã®åäžã®ãã©ãããã©ãŒã ãæ§ç¯ããããšã§ãã
æè¿ã§ã¯ããµããŒããããŠããã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ãã¯éåžžã«å°ãããGoogle Chromeãšãã1ã€ã®ãã©ãŠã¶ãŒã®ã¿ã§æ§æãããŠããŸããã
éå»1幎ã§ããã®ãªã¹ãã¯å€§å¹ ã«æ¡å€§ããã»ãšãã©ãã¹ãŠã®ææ°ãã©ãŠã¶ãŒããã®ãã¯ãããžãŒã®ãµããŒããéå§ããŸããã
çŸæç¹ã§ã¯ãMozilla Firefox 27以äžããã³WebKitããŒã¹ã®ãã©ãŠã¶-Google Chrome 29以äžãOpera 18以äžãYandex.Browser 13以äžã§ãã
Safariã2014幎2æã« WebRTCã¯ãŒãã³ã°ã°ã«ãŒãã«å ãã£ãŠããã«ãSafariããã®ãªã¹ãã«èŒãããšãæãŸããŸãã
æ®å¿µãªãããMicrosoftã¯WebRTCãå®è£ ããŠç¬èªã®CU-RTC-Webãã¯ãããžãŒãäœæããäºå®ã¯ãããŸããããå€å圌ãã¯ãã¯ãããžãŒãå€ããå°ãªããäºæã«ããã§ãããã
Internet Explorerã®ãŠãŒã¶ãŒåãã«ãChromiumããŒã¹ã®ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ããªãªãŒã¹ãããã®ãã¯ãããžãŒã®ãµããŒããªãã§ãã©ãŠã¶ãŒã®ãŠãŒã¶ãŒã«æäŸããããšãææ¡ããŸãã
WebRTCãã¯ãããžãŒã®äœ¿çšæ¹æ³ãšãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®åäœã«ã€ããŠã¯ã1C-Bitrix Winter Partner Conferenceã§è¬æŒããŸãã ãã¬ããŒãããªã³ã©ã€ã³ã§èŠããã ãããªãããŠã³ããŒãã§ããŸãã
WebRTCã¯ã©ã®ããã«æ©èœããŸããïŒ
å®éããã¹ãŠãæåéã3ã€ã®ãã€ã³ãã§éåžžã«ç°¡åã«æ©èœããŸãã
1.ãŠãŒã¶ãŒã«ã¯ããããªã«ã¡ã©ãšãã€ã¯ã®äœ¿çšèš±å¯ãæ±ããããŸãã
2.å¥ã®ãŠãŒã¶ãŒïŒæ©åšã®äœ¿çšèš±å¯ãäžããïŒãšæ¥ç¶ããçŽæ¥æ¥ç¶ã®ã³ãŒããã¯ãšIPã¢ãã¬ã¹ã«é¢ããããŒã¿ã亀æããŸãã
3.ãããªã衚瀺ãããµãŠã³ããåçããŸãã
ç°¡åã§ããïŒ ã¯ã...ã»ãšãã©:)
WebRTCãã¯ãããžãŒã¯ãæåã®ãŠãŒã¶ãŒãã€ã³ãã£ã³ã°çšã®ããŒã«ãæäŸããŸããããã®éšåã¯èªåã§è¡ãå¿ èŠããããŸãããã®éšåã¯ãSignalingããŸãã¯ãSignaling ProtocolããšåŒã°ããŸãã
ã·ã°ããªã³ã°ãããã³ã«ãšã¯äœã§ããïŒ
Signaling ProtocolãŸãã¯SignalingïŒSignalingïŒãšã¯ãã³ãã³ããšããŒã¿ã®äº€æã®ããã®ããŠãŒã¶ãŒéã®éä¿¡ã®ç·šæãæå³ããŸãã
æãåçŽãªã¹ããŒã ã§ã¯ã次ã®ã³ãã³ãã®åŠçãæŽçããå¿ èŠããããŸãã
1.æåŸ -é»è©±ããããããã®æåŸ ïŒãŠãŒã¶ãŒãé»è©±ããããŠå¿çãããã©ããïŒ;
2. answer-é話ã«å¿çããŸãã
3.æåŠ-é話ããã£ã³ã»ã«ããŸãã
4.é話äž-ãŠãŒã¶ãŒã¯å¥ã®é話ã§é話äžã§ãã
5.æºåå®äº-ãŠãŒã¶ãŒã¯ããŒã¿äº€æã®æºåãã§ããŠããŸãã
6.ã·ã°ããªã³ã°-ããŒã¿äº€æã
äžèšã®åºæ¬çãªã³ãã³ãã®ã¿ããªã¹ããããŠããŸãããå®éã«ã¯ããã«å€ãã®ã³ãã³ãããããŸãã
-åå -æ¢åã®äŒè©±ãžã®æ¥ç¶ã
-åŸ æ©-ãŠãŒã¶ãŒã¯ãªã³ã©ã€ã³ã§ãåçãåŸ ã¡ãŸãã
-waitTimeout-å¥ã®ãŠãŒã¶ãŒãåçãåŸ ããªãã£ãã
-errorAccess-ãŠãŒã¶ãŒã«æè¡çãªåé¡ããããŸãã
-åæ¥ç¶-ãŠãŒã¶ãŒã¯æ¥ç¶ã確ç«ã§ããŸããã§ãããåæ¥ç¶ãå¿ èŠã§ãã
ã³ãã³ããåãåã£ããšãã«äœãèµ·ããã®ããã©ã®ã¡ãã»ãŒãžã衚瀺ãããã®ããããžãã¹ã¿ã¹ã¯ã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯äœã§ããã®ãã決å®ããŸãã
ç§ã¯ãã¹ãŠãç解ããŸãããã¢ããªã±ãŒã·ã§ã³ãäœæãããïŒ
WebRTCã䜿çšããã«ã¯ãããã¯æ¿èªãããæšæºã§ã¯ãããŸãããããã©ãŠã¶ã«ãã£ãŠ API ããããã«ç°ãªãããšãç解ããå¿ èŠããããŸãã
ãŸããã·ã°ããªã³ã°çšã®ãªã¢ã«ã¿ã€ã ãã©ã³ã¹ããŒããæŽçããæ¹æ³ã NATããã€ãã¹ããæ¹æ³ãæ€èš ãããããæ©èœãããæ¹æ³ã«é¢ããæ瀺ãèªãããšãæ€èšãã䟡å€ããããŸãã
äžèšã®è¡ãèªãã åŸãããããWebRTCã¢ããªã±ãŒã·ã§ã³ãäœæããããšã«ããããããããŒãžãã»ãŒéããŸããã
ãããããããã¯ã¯é¿ããŠãã ããïŒ è£œåã«ã¯ãã¹ãŠããã§ã«å«ãŸããŠããŸãã
1.ãããã·ã¥ïŒãã«ãã¢ãžã¥ãŒã«ãšnginxãµãŒããŒã®ã¢ãžã¥ãŒã«-nginx-push-stream-moduleã«åºã¥ããŠããªã¢ã«ã¿ã€ã ã·ã°ããªã³ã°ãããã³ã«ãç·šæã§ããŸãããããã®æäœæ¹æ³ã¯ãBitrixã®ããã°ã§è©³ãã説æãããŠããŸãïŒãã®ãªãã·ã§ã³ãããªãã®ããã®å Žåäžå¹žãªããšã«ãSocket.ioãªã©ã®å¥ã®è£œåã«ç°¡åã«çœ®ãæããããšãã§ããŸãã
2. NATããã€ãã¹ããããã«ã turn.calls.bitrix24.comã§è£œåã®ãã¹ãŠã®ãŠãŒã¶ãŒãå©çšã§ããã¯ã©ãŠããµãŒãã¹ãäœæããŸãã ã
3.補åã®ã³ã¢ã«ãAPIãšWebRTCã®ã»ãšãã©ã®ããžãã¯ã®äžäžèŽãé ãç¹å¥ãªã©ã€ãã©ãªcore_webrtcãè¿œå ããŸããïŒã©ã€ãã©ãªã¯ããŒãžã§ã³14.0.15以éã®ãã¡ã€ã³ã¢ãžã¥ãŒã«ãã§å©çšå¯èœã§ãïŒã
ãããŠæé«ã®éšå
4.ãã¹ãŠã®ããžãã¯ãå®è£ ããç¹å¥ãªã³ã³ããŒãã³ããéçºããŸãããããã«ãããã¢ããªã±ãŒã·ã§ã³ããã°ããæãäžããŠäœæãéå§ã§ããŸãïŒã³ã³ããŒãã³ãã¯ãããŒãžã§ã³14.1.5以éã®ããã·ã¥ïŒãã«ã¢ãžã¥ãŒã«ã§å©çšå¯èœã§ãïŒã
ãã¢ã¢ããªã±ãŒã·ã§ã³ãèµ·åãã
ããŒãžã§ã³14.1.5以éã ãã¢ãã©ã«ããŒã¯ãããã·ã¥ã¢ã³ããã«ãã¢ãžã¥ãŒã«ïŒ/ bitrix / modules / pull /ïŒã«ç»å ŽããŸããããã®äžã«ã¯2ã€ã®äŸããããŸãã
1.ãããã·ã¥ã¢ã³ããã«ãã¢ãžã¥ãŒã«ã®äœ¿çšäŸã
2. WebRTCã®äœ¿çšäŸ;
ç§ã¯ã¡ããã©2çªç®ã®ãã®ã«ã€ããŠè©±ãããã£ãã ãã§ãïŒ
éå§ããã«ã¯ã次ã®æé ãå®è¡ããŸãã
1. / bitrix / modules / pull / demo / webrtc / compontents /ãã©ã«ããŒããã³ã³ããŒãã³ããã³ããŒããŸããããšãã°ãhere / bitrix / compontens / yourcompanyprefix /
2.ããŒãž/ bitrix / modules / pull / demo / webrtc / html /ããµã€ãã®ã«ãŒãã«ã³ããŒããŸãã
3.ããã·ã¥ïŒãã«ã¢ãžã¥ãŒã«ããã¥ãŒãµãŒããŒãšé£æºããããã«æ§æããŸãã
4. 2人ã®ãŠãŒã¶ãŒãç»é²ããŸãã
ããã§ã2人ã®ç°ãªããŠãŒã¶ãŒã®äžã§ãã®ããŒãžã«ã¢ã¯ã»ã¹ãããäºãã«é»è©±ããããããšãã§ããŸãïŒ
æè¯ã®ããã¥ã¡ã³ãã¯ãœãŒã¹ã³ãŒãã§ãã
demo_webrtc.jsïŒã³ã³ããŒãã³ãã«ããïŒã§äœ¿çšãããåé¢æ°ã®ç®çãç°¡åã«èª¬æããæ®ãã¯ãã¹ãŠãœãŒã¹ã³ãŒãããæ確ã«ãªãããšãæã¿ãŸãã
ã³ã³ããŒãã³ããšãã®ä»çµã¿ãããããç解ããã«ã¯ã次ã®2ã€ã®èšäºãèªãã§ãã ãããããã«ãããæäœæ§ãåäžããŸãã
ç¬èªã®JSã©ã€ãã©ãªã®äœæïŒJSãCSSããã¬ãŒãºãäŸåé¢ä¿ã
ã¢ãžã¥ãŒã«ãããã·ã¥ïŒãã«ãã§ã®äœæ¥
WebRTCïŒåæå
YourCompanyPrefix.webrtcïŒïŒ
ããã¯WebRTCãæäœããããã®ã¯ã©ã¹ã§ãããããã©ã«ãå€ã説æããã·ã°ããªã³ã°ãæäœããŸãã
泚ïŒBX.garbageã¯ãããŒãžãé¢ããããªããŒãããããããšãã«æ©èœãããããåŒã³åºããäžæã§ããŸãã
BX.inheritWebrtcïŒYourCompanyPrefix.webrtcïŒ;
ãã®é¢æ°ã¯åæåã®çŽåŸã«å®è¡ããå¿ èŠããããããŒã¹ã©ã€ãã©ãªBX.webrtcã®ãã¹ãŠã®ããŒã¹ã¯ã©ã¹ãç¶æ¿ããŸãã
ããã¯WebRTCãæäœããããã®ã¯ã©ã¹ã§ãããããã©ã«ãå€ã説æããã·ã°ããªã³ã°ãæäœããŸãã
泚ïŒBX.garbageã¯ãããŒãžãé¢ããããªããŒãããããããšãã«æ©èœãããããåŒã³åºããäžæã§ããŸãã
BX.inheritWebrtcïŒYourCompanyPrefix.webrtcïŒ;
ãã®é¢æ°ã¯åæåã®çŽåŸã«å®è¡ããå¿ èŠããããããŒã¹ã©ã€ãã©ãªBX.webrtcã®ãã¹ãŠã®ããŒã¹ã¯ã©ã¹ãç¶æ¿ããŸãã
WebRTCïŒUserMedia API
YourCompanyPrefix.webrtc.startGetUserMedia
ãããªã«ã¡ã©ãšãã€ã¯ãžã®ã¢ã¯ã»ã¹ããªã¯ãšã¹ãããæ©èœ
YourCompanyPrefix.webrtc.onUserMediaSuccess
ãã®æ©èœã¯ããæ©åšãžã®ã¢ã¯ã»ã¹ã«æåããŸããããšããã€ãã³ããããªã¬ãŒããããšãã«åŒã³åºãããŸãã
YourCompanyPrefix.webrtc.onUserMediaError
ãã®æ©èœã¯ãã€ãã³ããæ©åšãžã®ã¢ã¯ã»ã¹ãšã©ãŒããããªã¬ãŒããããšåŒã³åºãããŸãã
ãããªã«ã¡ã©ãšãã€ã¯ãžã®ã¢ã¯ã»ã¹ããªã¯ãšã¹ãããæ©èœ
YourCompanyPrefix.webrtc.onUserMediaSuccess
ãã®æ©èœã¯ããæ©åšãžã®ã¢ã¯ã»ã¹ã«æåããŸããããšããã€ãã³ããããªã¬ãŒããããšãã«åŒã³åºãããŸãã
YourCompanyPrefix.webrtc.onUserMediaError
ãã®æ©èœã¯ãã€ãã³ããæ©åšãžã®ã¢ã¯ã»ã¹ãšã©ãŒããããªã¬ãŒããããšåŒã³åºãããŸãã
WebRTCïŒPeerConnection API
YourCompanyPrefix.webrtc.setLocalAndSend
ãã®é¢æ°ã¯ãçŸåšã®ãŠãŒã¶ãŒã«é¢ããã¡ã¿æ å ±ãèšå®ãããããå¥ã®ãŠãŒã¶ãŒã«æž¡ããŸã
YourCompanyPrefix.webrtc.onRemoteStreamAdded
ãã®é¢æ°ã¯ããReceived remote media streamãã€ãã³ããããªã¬ãŒãããŠãããªã¿ã°ã«è¡šç€ºããããšãã«åŒã³åºãããŸã
YourCompanyPrefix.webrtc.onRemoteStreamRemoved
ãã®é¢æ°ã¯ããRemote Media Stream Disabledãã€ãã³ããããªã¬ãŒããããšãã«åŒã³åºããããããªã¿ã°ã§ãªãã«ããŸã
YourCompanyPrefix.webrtc.onIceCandidate
ãã®é¢æ°ã¯ããã³ãŒããã¯ãIPããã®ä»ã®æ å ±ã«é¢ããã¡ã¿æ å ±ã転éããå¿ èŠããããŸãããšããã€ãã³ããå¥ã®ãŠãŒã¶ãŒã«ããªã¬ãŒããããšåŒã³åºãããŸãã
YourCompanyPrefix.webrtc.peerConnectionError
ãã®é¢æ°ã¯ããŠãŒã¶ãŒéã®æ¥ç¶ã®äœæäžã«ãšã©ãŒãçºçãããšãã«åŒã³åºãããŸãã
YourCompanyPrefix.webrtc.peerConnectionReconnect
é¢æ°ã¯ãããšãã°ãšã©ãŒã®ããã«ããŠãŒã¶ãŒãæ¢åã®ã»ãã·ã§ã³ã«åæ¥ç¶ããããšããèŠæ±ãéä¿¡ããŸã
YourCompanyPrefix.webrtc.deleteEvents
ãã®é¢æ°ã¯ãå€æŽããããã¹ãŠã®å€æ°ãæ°ããåŒã³åºãã«ãªã»ããããŸãã
ãã®é¢æ°ã¯ãçŸåšã®ãŠãŒã¶ãŒã«é¢ããã¡ã¿æ å ±ãèšå®ãããããå¥ã®ãŠãŒã¶ãŒã«æž¡ããŸã
YourCompanyPrefix.webrtc.onRemoteStreamAdded
ãã®é¢æ°ã¯ããReceived remote media streamãã€ãã³ããããªã¬ãŒãããŠãããªã¿ã°ã«è¡šç€ºããããšãã«åŒã³åºãããŸã
YourCompanyPrefix.webrtc.onRemoteStreamRemoved
ãã®é¢æ°ã¯ããRemote Media Stream Disabledãã€ãã³ããããªã¬ãŒããããšãã«åŒã³åºããããããªã¿ã°ã§ãªãã«ããŸã
YourCompanyPrefix.webrtc.onIceCandidate
ãã®é¢æ°ã¯ããã³ãŒããã¯ãIPããã®ä»ã®æ å ±ã«é¢ããã¡ã¿æ å ±ã転éããå¿ èŠããããŸãããšããã€ãã³ããå¥ã®ãŠãŒã¶ãŒã«ããªã¬ãŒããããšåŒã³åºãããŸãã
YourCompanyPrefix.webrtc.peerConnectionError
ãã®é¢æ°ã¯ããŠãŒã¶ãŒéã®æ¥ç¶ã®äœæäžã«ãšã©ãŒãçºçãããšãã«åŒã³åºãããŸãã
YourCompanyPrefix.webrtc.peerConnectionReconnect
é¢æ°ã¯ãããšãã°ãšã©ãŒã®ããã«ããŠãŒã¶ãŒãæ¢åã®ã»ãã·ã§ã³ã«åæ¥ç¶ããããšããèŠæ±ãéä¿¡ããŸã
YourCompanyPrefix.webrtc.deleteEvents
ãã®é¢æ°ã¯ãå€æŽããããã¹ãŠã®å€æ°ãæ°ããåŒã³åºãã«ãªã»ããããŸãã
WebRTCïŒã·ã°ããªã³ã°API
YourCompanyPrefix.webrtc.callInvite
ãããªé話ãžã®æåŸ ãå¥ã®ãŠãŒã¶ãŒã«éä¿¡ããæ©èœ
YourCompanyPrefix.webrtc.callAnswer
ãããªé話ãèšå®ããããã®ç¢ºèªãéä¿¡ããæ©èœ
YourCompanyPrefix.webrtc.callDecline
ãã£ã³ã»ã«ãéä¿¡ãããããããªé話ãçµäºããæ©èœ
YourCompanyPrefix.webrtc.callCommand
ä»ã®ã³ãã³ããå¥ã®ãŠãŒã¶ãŒã«éä¿¡ããæ©èœïŒãŠãŒã¶ãŒã¯æ¥ç¶ã確ç«ããæºåãã§ããŠããããŠãŒã¶ãŒã¯ããžãŒç¶æ ãªã©ïŒ
ãããªé話ãžã®æåŸ ãå¥ã®ãŠãŒã¶ãŒã«éä¿¡ããæ©èœ
YourCompanyPrefix.webrtc.callAnswer
ãããªé話ãèšå®ããããã®ç¢ºèªãéä¿¡ããæ©èœ
YourCompanyPrefix.webrtc.callDecline
ãã£ã³ã»ã«ãéä¿¡ãããããããªé話ãçµäºããæ©èœ
YourCompanyPrefix.webrtc.callCommand
ä»ã®ã³ãã³ããå¥ã®ãŠãŒã¶ãŒã«éä¿¡ããæ©èœïŒãŠãŒã¶ãŒã¯æ¥ç¶ã確ç«ããæºåãã§ããŠããããŠãŒã¶ãŒã¯ããžãŒç¶æ ãªã©ïŒ
WebRTCïŒåºæ¬ã³ãã³ãïŒcore_webrtc.jsã©ã€ãã©ãªããïŒ
YourCompanyPrefix.webrtc.ready
çŸåšã®ãã©ãŠã¶ã§WebRTCãå©çšå¯èœãã©ããã確èªããŸã
YourCompanyPrefix.webrtc.signalingReady
çŸåšã®ããŒãžã§ã·ã°ããªã³ã°ãå©çšå¯èœãã©ããã確èªãã
YourCompanyPrefix.webrtc.toggleAudio
ãã€ã¯ã®ãªã³/ãªã
YourCompanyPrefix.webrtc.toggleVideo
ã«ã¡ã©ã®ãªã³/ãªããåãæ¿ããŸã
YourCompanyPrefix.webrtc.onIceConnectionStateChange
ãã®é¢æ°ã¯ããæ¥ç¶ã®ç¢ºç«ãã€ãã³ããããªã¬ãŒããããšåŒã³åºãããŸãã
YourCompanyPrefix.webrtc.onSignalingStateChange
ãã®æ©èœã¯ãã€ãã³ããéä¿¡ã¹ããŒã¿ã¹ã®å€æŽããããªã¬ãŒããããšåŒã³åºãããŸãã
YourCompanyPrefix.webrtc.attachMediaStream
ãããª/ãªãŒãã£ãªã¹ããªãŒã ããããªã¿ã°ã«èšå®ããæ©èœ
YourCompanyPrefix.webrtc.log
ãã®ã³ã°æ©èœ
çŸåšã®ãã©ãŠã¶ã§WebRTCãå©çšå¯èœãã©ããã確èªããŸã
YourCompanyPrefix.webrtc.signalingReady
çŸåšã®ããŒãžã§ã·ã°ããªã³ã°ãå©çšå¯èœãã©ããã確èªãã
YourCompanyPrefix.webrtc.toggleAudio
ãã€ã¯ã®ãªã³/ãªã
YourCompanyPrefix.webrtc.toggleVideo
ã«ã¡ã©ã®ãªã³/ãªããåãæ¿ããŸã
YourCompanyPrefix.webrtc.onIceConnectionStateChange
ãã®é¢æ°ã¯ããæ¥ç¶ã®ç¢ºç«ãã€ãã³ããããªã¬ãŒããããšåŒã³åºãããŸãã
YourCompanyPrefix.webrtc.onSignalingStateChange
ãã®æ©èœã¯ãã€ãã³ããéä¿¡ã¹ããŒã¿ã¹ã®å€æŽããããªã¬ãŒããããšåŒã³åºãããŸãã
YourCompanyPrefix.webrtc.attachMediaStream
ãããª/ãªãŒãã£ãªã¹ããªãŒã ããããªã¿ã°ã«èšå®ããæ©èœ
YourCompanyPrefix.webrtc.log
ãã®ã³ã°æ©èœ
ãã®èšäºãã圹ã«ç«ãŠã°å¹žãã§ãã
ã質åãããå Žåã¯ãã³ã¡ã³ããèšå ¥ããŠãã ããã