-
Notifications
You must be signed in to change notification settings - Fork 128
Design
The idea is to use OBS great capturer and input mixers instead of webrtc capturers, but then use webrtc for the media stack (encoder, RTP packetizer, RTCP controller), security (DTLS-SRTP encryption), NAT traversal (ICE Transport), and Network Transport.
In principle, webrtc is closer to RTMP than to HLS or MPEG-DASH, in the sense that it is not file-based, and not HTTP-based. It made sense to re-use the rtmp-service and obs-outputs core plugins to implement WebRTC support.
However, unlike rtmp or any other protocol before, WebRTC 1.0 does not mandate any signalling protocol, or signalling transport protocol, even if the handshake itself is standardised (JSEP). Most of the vendors out there use (secure) web socket, so we have added a web socket plugin to implement signalling. We have also implemented the signalling protocol for the Janus (VideoRoom) open source server, the millicast service, and a few others. One can inspire him/herself from them when writing their own. They are used in production. They are all sharing the same media stack.
The code design of the interfaces between OBS capturer and output with libwebrtc, and how to extend the classes to add additional vendors support is detailed on a separate page.