26
ORTC SimulCast #niku_sushi Jxck

ORTC SVC SimulCast

  • Upload
    jxck-

  • View
    1.324

  • Download
    3

Embed Size (px)

Citation preview

Page 1: ORTC SVC SimulCast

ORTC SimulCast

#niku_sushi Jxck

Page 2: ORTC SVC SimulCast

● id: Jxck● github: Jxck● twitter: @jxck_● about: http://jxck.io● blog: http://jxck.hatenablog.com● podcast: http://mozaic.fm● Love: music

Jack

Page 3: ORTC SVC SimulCast

Q: Why ORTC ?A: long story...

3

Page 4: ORTC SVC SimulCast

4

that’s all thank you !!

Page 5: ORTC SVC SimulCast

ORTC ≒ WebRTC 1.0 + SimulCast + MultiStream interop

5

Page 6: ORTC SVC SimulCast

Simulcast

6

Page 7: ORTC SVC SimulCast

SimulCast ?

7

Different Context !!

Page 8: ORTC SVC SimulCast

AVC Simulcast

8

● re-encoding for each client capability, network○ heavy resource○ latecy at server

Page 9: ORTC SVC SimulCast

SVC Simulcast

9

● SVC encode at client○ multi layered video○ router choose a layer

Page 10: ORTC SVC SimulCast

SVC

10

Page 11: ORTC SVC SimulCast

SVC(scalable video coding)

11

● multi layered coding○ 1-base layer○ n-enhancement layer

● parameter○ Temporal (frame rate)○ Spatial (resolution)○ Quality (SNR)

Page 12: ORTC SVC SimulCast

Temporal

12

Page 13: ORTC SVC SimulCast

Spatial

13

Page 14: ORTC SVC SimulCast

Quality

14

Page 15: ORTC SVC SimulCast

layer● base layer

○ lowest quality for video conference○ small size○ error correction

● enhancement layer○ merge with base layer○ more size○ fallback to base layer if lost

● layer choice○ layer routing server choice○ negotiation, bandwidth estimation etc

15

Page 16: ORTC SVC SimulCast

ORTC API

16

Page 17: ORTC SVC SimulCast

Over View

17

Page 18: ORTC SVC SimulCast

before / after PeerConnection

18

// beforelet peer = new PeerConnection();

// call these during singallingpeer.addStream();peer.onnegotiationneeded;peer.createOffer/Answer();peer.setLocal/RemoteDescription();peer.onicecandidate;peer.addIceCandidate();

// ALL API are on PeerConnection Class

Page 19: ORTC SVC SimulCast

before / after PeerConnection

19

// afterlet iceGatherer = new RTCIceGatherer(iceGatherOptions);let iceTransport = new RTCIceTransport(iceGatherer);let dtlsTransport = new RTCDtlsTransport(iceTransport);

let rtpSender = new RTCRtpSender(mediaStreamTrack, dtlsTransport);let rtpReceiver = new RTCRtpReceiver(dtlsTransport);let sendCapas = RTCRtpSender.getCapabilities('video');let recvCapas = RTCRtpReceiver.getCapabilities('video');// exchange caps

// ALL API are on each Classes

Page 20: ORTC SVC SimulCast

before / after DataChannel

20

// after

let iceGatherer = new RTCIceGatherer(iceGatherOptions);let iceTransport = new RTCIceTransport(iceGatherer);let dtlsTransport = new RTCDtlsTransport(iceTransport);let sctpTransport = new RTCSctpTransport(dtlsTransport);

let channel = new RTCDataChannel(sctpTransport);

// before

peerConnection.createDataChannel((channel) => {

});

Page 21: ORTC SVC SimulCast

SVC

21

var encodings = [ { // 低解像度ベースレイヤ(1/2 フレームレート 1/2 解像度) encodingId: "0", resolutionScale: 2.0, framerateScale: 2.0 }, { // 拡張解像度ベースレイヤ(1/2 フレームレート 1/1 解像度) encodingId: "E0", resolutionScale: 1.0, framerateScale: 2.0 }, { // 低解像度ベースへの拡張レイヤ (1/1 レート, 1/2 解像度) encodingId: "1", dependencyEncodingIds: ["0"], resolutionScale: 2.0, framerateScale: 1.0 }, { // 拡張解像度ベースへの拡張レイヤ (1/1 レート, 1/1 解像度) encodingId: "E1", dependencyEncodingIds: ["E0"], resolutionScale: 1.0, framerateScale: 1.0 }];

Page 22: ORTC SVC SimulCast

complicated ?

22

classes based on protocol stackhttp://www.slideshare.net/iwashi86/20140801-web-rtcmeetup3r3

Page 23: ORTC SVC SimulCast

WebRTC NV ≒ WebRTC.merge(ORTC)

23

Page 24: ORTC SVC SimulCast

more:http://jxck.hatenablog.com/entry/ortc-to-webrtcnv

24

Page 25: ORTC SVC SimulCast

have a nice web :)

25

Page 26: ORTC SVC SimulCast

Jack