iOSDC Japan 2018 3日目の発表資料です。
CWEB WEBRTCiOSDC Japan 2018 2018 / 09/ 02
View Slide
WGT:uCB\uTwitter\@Tukimikage• WebRTCLEu;8• <XWebRTC,2')+5/ SkyWay 69• 7&305$145 (!)DevRelNJ• ;8PiOS/Android/WebIMA ?PHPJSO9u#.0*(ZD• WebRTC Meetup Tokyo / Osaka / Fukuoka 7>(2014H• WebRTC Beginners Tokyo 7>(2016Hu,2-5)• UY[Q@FV6S="%RKFTDS
,6<WebRTC5;<'!(!Web9#)*&% ./ -1#)*&% 30=24,6iOS"+$&8:7 WebRTC<
• WebRTC• WebRTC• WebRTC • WebRTC • WebRTC •
slido.com#welovewebrtc
WebRTCWebReal TimeCommunicationIP //
www.flickr.com/photos/mattb_tv/2550476978 1876
2000 NapsterSkype www.flickr.com/photos/132889348@N07/18410514419
2011WebRTC www.flickr.com/photos/86979666@N00/6990460438
⇔ WebRTC
)$ WebRTC ' +!P2P"%⇔ !"% *( WebRTC
Web
WebRTC• WebRTC 6+-0• / 4IETF(C~E)W3C(F)6+!C?9!>2;@"),1BA%8 &• D$4(NAT:)5 P2P';• E7.<=3*()• F(#API
chimera.labs.oreilly.com/books/1230000000545/ch18.html
chimera.labs.oreilly.com/books/1230000000545/ch18.html,API*&"%$')(!+ (NAT#) P2P$
()
WebRTCIP&"SkyWayFaceTime$% # !
9WebRTC:=• "%#'API(2*) ;.+*• "% -36- 50,7/8• iOS/Android/Web&#%!'$<4(2*1;.+*
@WebRTC BE• &) !'",#API-91. C5 21• &)"$ 4:=4 <7 3>6?• iOS/Android/Web +')!#%,(D;-918 C5 21%*)! WebRTC3>0/ A
() -/WebRTC$&!"'%5,SDK+#&892.API*71604 ; !3:<
%…• BHSDK)A##([V• \C"pR)L%EiIWIFbZ '…• ocaPJMbaP!J!]nmSYs• HbhQ&E&-;>"$NqUD• 312=>/<+:G%F!XkKO %`T ?!re^@g l4,5,jE*WebRTC7;126.>9)f_dA08'&(08&
WebRTC• • ICE• • • libwebrtc• Safari
• A B 21:1 /
• A B 21:1 /HTML/CSS/JavaScript
• AB21:1 /WebRTCWebRTC
%• AB21:1 /' & $(") # !*IP+
"(• A B2#1:1/) '+%-&$/,.IP*0A&$!
%• AB21:1 /"' & $(!) #*IP+
&• AB2 1:1 /#( %)"+ $!-*,IP'.#( B$!
! &*• AB2(1:1!/ABP2P .-1/2UDP $"##3P2P0%)'$,+0%.
• A B 21:1 //
• P2P*' ( SDP(Session DescriptionProtocol)&• !WebRTC#%") !$ok
SDPv=0(……)a=group:BUNDLE audio videom=audio 54321 RTP/SAVPF 111 103 104 0 8 106 105 13 126(……)c=IN IP4 100.1.2.3a=rtcp:54321 IN IP4 100.1.2.3a=candidate:4022866446 1 udp 2113937151 192.168.0.1 34567 typ host generation 0a=candidate:4022866446 2 udp 2113937151 192.168.0.1 34567 typ host generation 0(……)a=rtpmap:111 opus/48000/2a=fmtp:111 minptime=10a=rtpmap:103 ISAC/16000a=rtpmap:104 ISAC/32000a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000(……) SRTP 54321Opus(48000kHz )
SDPv=0(……)a=group:BUNDLE audio videom=audio 54321 RTP/SAVPF 111 103 104 0 8 106 105 13 126(……)c=IN IP4 100.1.2.3a=rtcp:54321 IN IP4 100.1.2.3a=candidate:4022866446 1 udp 2113937151 192.168.0.1 34567 typ host generation 0a=candidate:4022866446 2 udp 2113937151 192.168.0.1 34567 typ host generation 0(……)a=rtpmap:111 opus/48000/2a=fmtp:111 minptime=10a=rtpmap:103 ISAC/16000a=rtpmap:104 ISAC/32000a=rtpmap:0 PCMU/8000a=rtpmap:8 PCMA/8000(……)ICE
ICE ( internet connectivity establishment )•P2P •STUN/TURN
STUN• ICE &.#• NAT2#• 1%!#IP #/'0$-• * +(&.UDP#""),STUNSTUNNATBinding Request+!$IPSTUN+!"IPSTUNBinding Request+!$IPNAT & IP()+!"IPSTUNBinding Response+!$IPSTUN+!"IPNAT & IP()'NAT & IP()Binding Response+!$IPSTUN+!"IPSTUN'NAT & IP()*)%#IP,. (-
UDPNAT NATB NG A OKBOK
TURN• UDP'! &• FW%UDP'$# ! "TURNAllocation RequestIP STUNIP TURNAllocation Success ResponseIP STUNIP TURNTURN BA IPTURN
TURNTURNTURNCreate PermissionAB B 2Create Permission Success ResponseOK• UDP'! &• FW%UDP'$# ! "
TURNTURNTURNACreate Permission AB B 2Create Permission Success ResponseOK2 PA• UDP'! &• FW%UDP'$# ! "
TURN• TURNUDP0/!#"-&+ * %'• UDPTCPTLS4,2 3()TURN TURN TURN-UDP / TURN-TCP / TURN-TLS4,2 1$!.UDP
&!H-• WebRTC'( %6C7UDPH-1;• UDPH- ?=I4GE")3BRTP(RealTime Protocol)H-DJitter()Out-of-order ()Loss ( )% *# .= $*/5+*>0,:.F )JRTCPSR/RR 29K
,•RTP+ #' SRTP(Secure RTP)%•SRTP,-%$!,-"DTLS)•DTLSTLS&*UDP(
;$•WebRTCDataChannel ;$)5•SCTP(Stream Control Transmission Protocol);$•SCTPUDPTCP%&<#6>-'.3=/:9'. +4• SCTP,/3 DTLS1*(• 0!2SCTPQUIC"87
libwebrtc• WebRTC$( • Google '% OSS-Framework• Chrome, Firefox, SafariWebRTC-PF"& iOS, Android SDK# • iOS/Android SDK! https://webrtc.googlesource.com/src/
libwebrtc• libwebrtc -& ) • *" %#(,$!+'https://cocoapods.org/pods/GoogleWebRTC https://github.com/shiguredo/sora-webrtc-build
libwebrtc ($https://qiita.com/tnoho/items/f5afa3ba749eed9b9716 )#" ($libwebrtc' %!&
Safari-/• 2017.09 SafariWebRTC-/• libwebrtc %Chrome/Firefox;'20• %H.264$"% 41• "(! ,86.:&• RTCPeerConnection+*getUserMedia+*• 97@taminif3 #)5http://taminif.hatenablog.jp/entry/2017/10/03/005306
SafariWebRTC https://gist.github.com/voluntas/3849d9881d97ea0bb403a2122f0e4a31
WebRTC IPv6 !• WebRTCIPv6 (+• IPv4IPv6%' NAT64/DNS641TURN(.Android464XLAT2 STUN#)/• & SafariTURN ,$ v6-v4 %' - *"1 NAT64/DNS64 --- https://www.slideshare.net/yuyarin/cedecnet-20152 464XLAT --- https://www.slideshare.net/twovs/192004-on-android
WebRTC
sketch.pixiv.net/items/3937947988965054025
clinics.medley.life
www.streamroot.io
x WebRTCIoT x WebRTCVR x WebRTC
"0("' x WebRTC• WebRTC>B"0("'4= +0$ 0$;?• :1<2EI= +0$ 0$J• MCU/SFU*%"0(0;?• <1<51.)-SFU• .!0%/• GHG@Cbot"0("'4 ,/&79FD63 GHG@;?SFUA BC .!0%/bot$&.0#
!6+!( x WebRTC• .0$'• DNH/4';=P2P/4'5!6+P2P> • !6+936+1IP(2#C<:? *%,%K• TURNF • &.0$'• /4'$-&6':!6+!(WebRTC4"4.4%)4#AL• @I7WebRTC GatewayEG• #6/,0%JB8ALDMM Eikaiwa-san @ WebRTC Meetup Tokyo #182 6&4Bot#6/,0%Mhttps://youtu.be/aVmCgVunfog?t=2834
IoT x WebRTC• WebRTC@K ?&(!%;S<,.%#.% 7C• 1RaspberryPiI9&(!%40 • HN"+- 5/WebRTC1"+-=2 PU4/>JE8%*)TJTQ• RX• &(!%• W3&(!%• RaspberryPiI9&(!% $%'G6• RX OAWebRTC Gateway BD
• RTP0& 6*)' $WebRTC,/• WebRTC,/!"+2 (.IoT x WebRTCRTP WebRTC(5%)WebRTC Gateway WebRTC,/! 14 WebRTC(#5%)WebRTC Gateway-3: https://www.elekit.co.jp/product/MR-9107WebRTC,/!
IoT x WebRTC• Janus WebRTC Gateway - https://janus.conf.meetecho.com/• O;24(%7KEQW$Z SFU/MCU/bdbTDR"9W`G• SlackdC_YSSFUIS#"eXA"K $f• https://iwashi.co/2016/03/05/slack-webrtc-analysis.html• SkyWay WebRTC Gateway - https://github.com/skyway/skyway-webrtc-gateway/• libwebrtc38,SkyWay*(057()81!iOS/Android/JS SDKU:JV?W• RTPUDP$]![WebRTC #"• Janus@ 24(%7PQWHF""• McB WebRTC Gateway momo (WebRTC Native Client) – https://momo.shiguredo.com• libwebrtc38,Sigiredo soraeSFUf!.1%,L>$SFUa="S^<• N\ Open momo26+&'/5,-8/• https://gist.github.com/voluntas/51c67d0d8ce7af9f24655cee4d7dd253
VR x WebRTCWebVR meets WebRTC: Towards 360-degree social VR experienceshttps://youtu.be/2Ng67blnp9c?t=9
VR x WebRTC• Oculus GoVR • WebRTC Gateway RTPWebRTCRTPRTPRTPWebRTC Gateway
• WebRTCP6;015*@8&<(=/)8,793+@.:?QZC_6>1,=• WebRTC^J[\%#WebRTC6;015*@8&SUO "$O& NF^EBH• WebRTCLAM-@4-)2SUIoTYD%VRYD% RW&T!• WebRTC&SU`VKI'ba X]G