Welcome Edge! Welcome ORTC!

Welcome Edge! Welcome ORTC!

2015년 11월 12일부로 Microsoft의 Windows 10 TH2가 배포되고 있습니다. TH2는 다양한 업데이트를 포함하고 있는 Windows 10의 대규모 업데이트의 일환인데 이 중 Windows 10의 기본 브라우저인 Edge에서 드디어 ORTC를 지원하기 시작합니다.

  • http://blogs.windows.com/windowsexperience/2015/11/12/first-major-update-for-windows-10-available-today/

Edge의 ORTC지원은 Windows 10의 개발/테스트 브런치인 Insider 프로그램을 통해 지난 9월 이미 구현과 배포가 되었으며, 이번 업데이트를 통해 일반 소비자에게 공개가 되었습니다.

  • https://blogs.windows.com/msedgedev/2015/09/18/ortc-api-is-now-available-in-microsoft-edge/

또한 Micorsoft는 Edge를 통해 지속적으로 WebRTC가 아닌 ORTC를 구현 하여 배포하겠다는 뜻을 지속적으로 밝혔는데요, 그렇다면 ORTC는 Microsoft만의 비 표준 독자구현일까요?  한번 살펴 보도록 하겠습니다.

  • https://dev.windows.com/ko-kr/microsoft-edge/platform/status/
Edge의 WebRTC, ORTC 구현 현황과 계획

Edge의 WebRTC, ORTC 구현 현황과 계획

ORTC? WebRTC?

ORTC는 WebRTC와 어떻게 다를까요? ORTC는 표준이 아닐까요?

정답부터 말하자면 ORTC와 WebRTC는 같은 선상에 있다고 볼 수 있으며, ORTC는 조만간 WebRTC 1.x 혹은 WebRTC 2와 같은 이름의 표준으로 우리앞에 등장하게 될 것입니다.

Microsoft의 Edge는 이미 Chrome, Firefox와 완벽하진 않지만 상호 운영이 가능한 상황입니다. 한번 살펴볼까요?

  • https://dev.windows.com/en-us/microsoft-edge/testdrive/demos/simplewebrtc/

위 예제에서 Chrome, Firefox는 기존 WebRTC API를 Edge는 ORTC API를 사용하여 음성과 데이터를 전송하고 있습니다. 이런 일이 가능한 이유는 ORTC가 WebRTC에서 사용자가 접근하지 않고 작동하는 Real Time Communication기능을 외부 객체로 노출하여 API단에서 직접 제어할 수 있도록 하였습니다. 말 그대로 Object RTC인 것이죠.

ortc-api-diagram

 

위의 두그림은 각각 ORTC의 구성과 WebRTC의 흐름을 나타내고 있습니다. WebRTC의 흐름에서 보이는 Offer SDP, Answer SDP와 같이 SDP는 상호 미디어 연결을 맺을때 주고 받는 규약인데 SDP안에는 어떤 코덱이나 어떤 전송방식을 사용할지가 규명되어 있습니다. ORTC 구성의 “RtpSender”, “Dtls”, “Sctp”등이 바로 SDP안에서 규정되고 WebRTC 엔진이 이를 처리하는 것이죠. WebRTC에서는 이 SDP 규약을 직접 제어할 수가 없었지만, ORTC에서는 이들을 직접 제어 하게 되고 심지어는 SDP 규약을 동적으로 생성이 가능합니다.

  • http://ortc.org/wp-content/uploads/2015/10/ortc.html
  • https://ko.wikipedia.org/wiki/세션_기술_프로토콜
  • https://webrtchacks.com/chrome-firefox-edge-adapterjs/
  • https://webrtchacks.com/sdp-anatomy/
  • http://www.nexpert.net/497
  • http://www.nexpert.net/502
  • http://www.nexpert.net/503

이러한 ORTC의 구현은 결과적으로 간단한 Javascript 코드로 RTC관련 기능을 조작하여 WebRTC API와 완전히 일치하는 규약을 만들 수 있으며 이를 통해 Edge는 WebRTC규격의 Chrome, Firefox와 통신할 수 있는것이죠. WebRTC와 ORTC의 브라우저 사용상의 코드 차이를 살펴보면 대략 다음과 같습니다.

스크린샷 2015-11-13 15.38.30

그리고 이 간단한 Javascript Shim은 현재 WebRTC의 공식 adapter.js에 통합될 예정으로 보이며 이미 Pull Request를 통해 구현체가 리뷰중입니다.

  • https://github.com/webrtc/adapter
  • https://github.com/webrtc/adapter/pull/136

ORTC!

그러면 ORTC가 주는 이점과 변화는 무엇이 있을까요? ORTC를 규정하고 구현하고 있는 캐나다의 강소기업 Hookflash는 다음과 같은 일이 가능하다고 합니다.

스크린샷 2015-11-13 15.45.59 스크린샷 2015-11-13 15.45.42

다양한 일이 가능할 것으로 보이는데, 좀 더 풀어서 생각해 보도록 하겠습니다.

ORTC의 탄생은 사실 SDP에 대한 불만족에서 시작 되었습니다. 구글이 처음 WebRTC에 대해 이야기를 할 2013년 즈음, 지금의 Hookflash의 Chief Architect인 Robin Raymond는 SDP가 WebRTC에 포함된것을 보고 SDP가 왜 “Web”과 “Javascript”세상과 맞지 않는지를 주장하였습니다.

  • http://blog.webrtc.is/2013/03/06/sdp-the-webrtc-boat-anchor/
  • http://blog.webrtc.is/2013/06/17/sdp-inside-webrtc-is-bad-for-sip/

1998년 텔레커뮤니케이션 회사에 의해 수립된 SDP 규격은 특히 상호간 연결시에 어떠한 형태로 세션이 구성되고 작동되어야하는 규격입니다. 당시에는 단순히 연결을 요청하고, 응답하는 형태의 RTC이 주를 이루었고 이를 잘하기 위해서는 연결 초기에 서로의 규약을 전달하면 됬습니다.

아래의 예제 SDP처럼, 이 규약은 지금의 웹에서 사용되는 JSON이나 XML과는 매우 다른 형태로 구성되어 있고 이해하기 힘듭니다. 동시에 현재 기술에서는 꼭 연결 초기에 모든 규약을 지정하여 연결이 지속되는 동안 그 규약을 이행할 필요나 요구가 줄어들었습니다. 단순한 예로 SDP에서 규정하는 코덱의 해상도나 비트레이트등도 여기에 해당할 수 있습니다. 또 XMPP/Jingle이나 SIP와 같은 1998년 이후에 등장한 기술과 통합에도 어려움이 됩니다.

v=0
o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1
s=-
t=0 0
m=audio 9 UDP/TLS/RTP/SAVPF 104 9 106 0 103 8 97 13 118 101
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=rtpmap:104 SILK/16000
a=rtcp-fb:104 x-message app send:dsh recv:dsh
a=rtpmap:9 G722/8000
a=rtcp-fb:9 x-message app send:dsh recv:dsh
a=rtpmap:106 OPUS/48000/2
a=rtcp-fb:106 x-message app send:dsh recv:dsh
a=rtpmap:0 PCMU/8000
a=rtcp-fb:0 x-message app send:dsh recv:dsh
a=rtpmap:103 SILK/8000
a=rtcp-fb:103 x-message app send:dsh recv:dsh
a=rtpmap:8 PCMA/8000
a=rtcp-fb:8 x-message app send:dsh recv:dsh
a=rtpmap:97 RED/8000
a=rtpmap:13 CN/8000
a=rtpmap:118 CN/16000
a=rtpmap:101 telephone-event/8000
a=rtcp-mux
a=ice-ufrag:lMRF
a=ice-pwd:NR15fT4U6wHaOKa0ivn64MtQ
a=setup:actpass
a=fingerprint:sha-256 6A:D8:7D:05:1A:ED:DB:BD:6A:60:1A:BC:15:70:D1:6C:A1:D9:00:79:E5:5C:56:15:73:80:E2:82:9D:B9:FB:69
a=mid:nbiwo5l60z
a=sendrecv
a=msid:7E4272C7-2B6C-49BD-BF7A-A3E7B8DD44F5 D2945771-D7B4-4915-AC29-CEA9EC51EC9E
a=ssrc:1001 msid:7E4272C7-2B6C-49BD-BF7A-A3E7B8DD44F5 D2945771-D7B4-4915-AC29-CEA9EC51EC9E
a=ssrc:1001 cname:3s6hzpz1jj

따라서 SDP에서 규정하는 여러 요소들을 객체화 하여 Javascript로 직접 조작하게 되면 복잡하고 불필요한 SDP규격 없이 JSON과 같이 이해하기 쉬운, 웹 친화적인 형태로 시그널링이 가능하고 현재의 다양한 기술사항과 통신환경에 대응할 수 있게 됩니다.

더 재미있는 점은 WebRTC가 브라우저 엔진으로 내장되었다면, ORTC에서는 이를 Node.js로 포팅하여 흥미로운 미디어서버를 구성이 가능할것으로 보입니다. 아래는 오래전 예제지만, 앞으로 이런일이 어렵지 않게 가능하리라 예상됩니다.

  • https://github.com/openpeer/ortc-node

WebRTC가 Peer to Peer통신의 규격이지만, 실제로는 TURN등 다양한 서버측 도움이 필요한데, JSON 규격의 시그널링과 결합한 NAT 우회, TURN/STUN연결등 서버측 기술에 있어서 다양한 변화가 예상되며 동시에 객체화된 미디어를 다룸으로써 미디어를 믹싱하거나 재전송하는데도 새로운 바람이 불것으로 예측됩니다.

코덱

하지만 모든 브라우저에서 RTC 엔진이 표준적으로 작동하는것과는 별개로 여전히 코덱 문제가 남아 있습니다.

다행히도 Microsoft, Cisco, Google, Amazon 등이 한데 모여 “The Alliance for Open Media” 구성했으며, 의미있는 결과가 있으리라 기대되고 있습니다.

  • http://aomedia.org/

참고로 현재 주요 브라우저에 대한 코덱현황은 다음과 같습니다.

  • Edge
    • 현재 VP9, H264UC(Microsoft향 H264). 향후 H264 적용가능성이 높음. VP9는 현재 ORTC에서 사용치 못함. H264UC만 사용가능.
    • https://blogs.windows.com/msedgedev/2015/09/08/announcing-vp9-support-coming-to-microsoft-edge/
    • https://webrtchacks.com/ortc-edge-microsoft-qa/
  • Chrome
    • 현재 VP9. 향후 H264 적용 예정 (빠르면 15년 말에서 16년 초)
    • https://code.google.com/p/chromium/issues/detail?id=500605
    • https://www.youtube.com/watch?v=HCE3S1E5UwY
    • 스크린샷 2015-11-13 15.33.19
  • Firefox
    • 현재 VP9, H264 적용
    • https://wiki.mozilla.org/Platform/MediaSourceExtensions
  • Safari
    • 현재 H264 적용

Welcome Edge! Welcome ORTC! And PlayRTC!

Edge를 통해 처음 일반에 공개되는 ORTC의 주요기능과 현재상태의 활용 여부를 간단히 살펴봤습니다. Chrome도 빠르면 15년 말, 16년 초에 ORTC API를 도입하겠다하니, 내년의 WebRTC는 정말 새로운 모습으로 시장에 나타 나리라 기대가 됩니다. PlayRTC또한 이러한 새로운 페러다임의 기술변화에 맞추어 높은 수준의 RTC API를 여러분께 제공드릴것을 약속드립니다.스크린샷 2015-11-13 16.16.42 스크린샷 2015-11-13 16.16.30 스크린샷 2015-11-13 16.16.17

아래의 링크는 Windows 10 TH2 Edge를 통해 ORTC를 체험해 볼 수 있는 페이지 입니다. 지금 Windows 10 TH2로 업그레이드 후 사용해 보세요!

  • ORTC Demo
    • https://dev.windows.com/en-us/microsoft-edge/testdrive/demos/ortcdemo/
  • ORTC로 웹에서 일반전화로 전화연결하기 (미국한정)
    • https://dev.windows.com/en-us/microsoft-edge/testdrive/demos/twilioortc/
  • WebRTC와 ORTC 연동
    • https://dev.windows.com/en-us/microsoft-edge/testdrive/demos/simplewebrtc/
  • 간단한 ORTC API 프로그래밍
    • https://webrtchacks.com/first-steps-ortc/
    • https://github.com/webrtchacks/first-steps-ortc
 

Play RTC

서비스 체험

Play RTC build PlaygrOund

나만의 플레이그라운드를 만들어 친구를 초대해보세요 !

www.playrtc.com/

번거로운 가입이나 설치 없이ID만 만들어서 영상통화나 파일 공유, 채팅 서비스를 무료로 즐겨보세요.

 

Play RTC

서비스 체험

개설한 Playground 주소를 복하해서 친구에게 보내조세요. 친구가 Playground에 접속하면 이곳에 친구의 영상과 음성이 나타납니다. Waiting..

Photo

X
이미지 미리보기
이미지
 

서비스 체험

 

서비스 체험

서비스 체험은 크롬과 파이어폭스 브라우저에 최적화되어 있습니다.
크롬 또는 파이어폭스 브라우저를 설치 후 다시 이용해주세요.