owt.md

June 16, 2023 ยท View on GitHub

The media server for Open WebRTC Toolkit (OWT) provides an efficient video conference and streaming service that is based on WebRTC. It scales a single WebRTC stream out to many endpoints and supports real-time video and audio transcoding.

Supported Media Codecs

The OWT service Docker images are compiled with following audio and video codec:

NameType
opusaudio
pcmaaudio
pcmuaudio
aacaudio
ac3audio
nellymoseraudio
h264video
h265video
vp8video
vp9video

Default bitrate for typical resolutions (30fps)**

ResolutionDefault bitrate(kbps)
352x288 (cif)442
176x144 (qcif)132
320x240 (sif)400
640x480 (vga)800
800x600 (svga)1137
1024x768 (xga)1736
480x320 (hvga)533
1280x720 (hd720p)2000
1920x1080 (hd1080p)4000
3840x2160 (uhd_4k)16000

OWT service modules:

The OWT serive images are compiled with the following modules:

Component NameResponsibility
management-apiThe entrance of OWT service, keeping the configurations of all rooms, generating and verifying the tokens. Application can implement load balancing strategy across multiple management-api instances
cluster-managerThe manager of all active workers in the cluster, checking their lives, scheduling workers with the specified purposes according to the configured policies. If one has been elected as master, it will provide service; others will be standby
portalThe signaling server, handling service requests from Socket.IO clients
conference-agentThis agent handles room controller logics
webrtc-agentThis agent spawning webrtc accessing nodes which establish peer-connections with webrtc clients, receive media streams from and send media streams to webrtc clients
streaming-agentThis agent spawning streaming accessing nodes which pull external streams from sources and push streams to rtmp/rtsp destinations
recording-agentThis agent spawning recording nodes which record the specified audio/video streams to permanent storage facilities
audio-agentThis agent spawning audio processing nodes which perform audio transcoding and mixing
video-agentThis agent spawning video processing nodes which perform video transcoding and mixing
sip-agentThis agent spawning sip processing nodes which handle sip connections
sip-portalThe portal for initializing sip conectivity for rooms

OWT service launch:

Before running OWT service, mongodb and rabbitmq services need to be launched. We provide a launch script compiled in Docker image to launch OWT service:

/home/launch.sh

OWT service configuration for public cloud:

The OWT service provides the following settings in configuration files to configure the network interfaces for public cloud (like AWS) access:

Configuration ItemLocationUsage
webrtc.network_interfaceswebrtc_agent/agent.tomlThe network interfaces of webrtc-agent that clients in public network can connect to
webrtc.minportwebrtc_agent/agent.tomlThe webrtc port range lowerbound for clients to connect through UDP
webrtc.maxportwebrtc_agent/agent.tomlThe webrtc port range upperbound for clients to connect through UDP
management-api.portmanagement_api/management_api.tomlThe port of management-api should be accessible in public network through TCP
portal.hostname, portal.ip_addressportal/portal.tomlThe hostname and IP address of portal for public access; hostname first if it is not empty.
portal.portportal/portal.tomlThe port of portal for public access through TCP

Note: You also need to configure your cloud security rule to allow public access to ports listed in above table.

OWT Environment Requirement

Different module tries to connect to RabbitMQ server running on the same system. Hence, no_proxy variable needs to be specified:

export no_proxy=localhost

OWT server and client document:

For more documents on OWT server and SDK, please refer to following links:

OWT server: OWT server installation and deployment guide.

OWT RESTAPI: OWT RESTful API guide.

JS SDK API: OWT javascript SDK API guide.

You can also go to Intel WebRTC to download all the released documents.