@acidsound
VIDEO
streamer
transcoding
Content Delivery Network
viewer
Huge computation cost/time
RTMP
HLS
HLS
streamer
viewer
webRTC
VP8
H264
VP8
H264
SFU
* SFU: selective forwarding unit
SFU
SFU
SFU
SFU
SFU
webRTC
Traditional | CASTO | |
---|---|---|
Transcoding | SAAS Transcoding Media Server |
x |
Storage | AWS, Azure, GCP | x (delivery only) |
Delivery | CDN | P2P |
$ ipfs object get QmR45FmbVVrixReBwJkhEKde2qwHYaQzGxu4ZoDeswuF9w
{“Links”: [{
“Name”: “”,
“Hash”: “QmYSK2JyM3RyDyB52caZCTKFR3HKniEcMnNJYdk8DQ6KKB”,
“Size”: 262158},
{“Name”: “”,
“Hash”: “QmQeUqdjFmaxuJewStqCLUoKrR9khqb4Edw9TfRQQdfWz3”,
“Size”: 262158},
{“Name”: “”,
“Hash”: “Qma98bk1hjiRZDTmYmfiUXDj8hXXt7uGA5roU5mfUb3sVG”,
“Size”: 178947}],
“Data”: “\u0008\u0002\u0018* \u0010 \u0010 \n”}
/* peer의 생성 */
peerInfo = await new Promise((resolve, reject)=>PeerInfo.create((err,peerInfo)=>err && reject(err) || resolve(peerInfo)));
/* peer가 가질 수 있는 복수의 multiaddr 추가 */
peerInfo.multiaddrs.add(multiaddr(`/dns4/star-signal.cloud.ipfs.team/wss/p2p-webrtc-star/ipfs/${peerInfo.id.toB58String()}`));
Streamer
Relay
Viewer
Star (libp2p)
STUN/TURN (webRTC)
discover
streaming
CASTO Architecture
dial
dial
peerConnection
peerConnection
streamer
viewer
webRTC
VP8
H264
VP8
H264
SFU
* SFU: selective forwarding unit
SFU
SFU
SFU
SFU
SFU
webRTC
peer
* libp2p 관점
peer
peer
peer
peer
peer
peer
peer
discovery
const casto = new CASTO();
media.srcObject = await casto.start();
Issues
같은 Public IP, 다른 공유기라면? (NAT-NAT)
한쪽은 WIFI, 한쪽은 LTE?
webRTC에서 사용하는 UDP가
공유기 레벨에서 막혀있다면?
심지어 통신사별로 정책이 다르다!
STURN/TURN 서버가 중앙화되는 문제!
Issues
대부분 시간이 해결해 줌 (Safari님아 자비좀...)
애플의 경우 webRTC Video가 된지 1년 겨우 넘었음
새로운 SDP Format - 유연하고 효과적인 Relay 구성 가능
오디오 재생 관련 구현이 브라우저별로 다름
Issues
다양한 Peer Discovery 방식 적용. 속도 향상.
Private Network에서 mDNS 적용하여 NAT안에서 해결
kadDHT를 통한 Peer간 Routing
Browser별 실행환경 차이에 대한 지속적 튜닝
Next CASTO