Note: Not a live demo, server configuration is just for example. For live working example try the Dolby.io Publisher and Subscriber example. Or AWS Kinesis Publisher and Subscriber example.
Example publisher using hidden player managed settings menu. Max device dimensions is disabled using maxDeviceDimensions
, the maximum capable dimensions of the device camera will be used which could be 4K which could be too large for publishing. If disabled maxWidth
and maxHeight
can be used to restrict dimensions if no dimension dropdown is configured.
The WebRTC Subscriber Player is used for subscribing to the stream. If there is a transcoding option enabled in the server a HLS source can be used instead.
If publishing to the server as RTMP using an encoder and restreaming as WebRTC, the subscriber player can be used for subscribing to the stream.
An audio meter display can be used to display microphone activity and volume.
Introduction
The WebRTC is a browser based low latency peering streaming solution with only the requirement of a signal server.
Studio conferencing features is supported allowing for participants to be added to the room by the host. Example server backends are provided to work with the different servers and WebRTC platforms.
The WebRTC plugin provides an integrated browser based encoder publishing application, with media device, resolution, codec, bitrate controls. And a subscriber player.
Media device selection can use whatever device the browser detects including video and audio inputs. Audio output control for the publisher is possible for browsers that support it.
Screensharing capabilities with browsers that support it are possible using screen sharing apis. The screen, browser, browser tab can be chosen , with an audio input for audio. This may be suitable for live broadcasting instruction videos or even gaming.
Switching between camera and screenshare video tracks is possible while peering. Retaining the original microphone audio stream. Recording of the media device is possible using browser based media recorder api's for browsers that support it. With a download capability of the recorded data.
Device toggling can turn the video / audio device off before and while publishing.
WebRTC settings can be configured as a player overlay,
Volume control of the audio input is made possible using the audio api. This also makes the possibility of an audio meter display
Live DVR features with WebRTC playing back recorded parts of a stream is possible with Dolby.io DVR and Wowza DVR for now.
ABR / Simulcast Bitrate Selection
Both Dolby.io and Oven Media Engine support simulcast layer or ABR bitrate selections for the subscribers. A bitrate menu will be displayed for selection when layers or ABR bitrates are available. Dolby.io doesn't need any configuration but Oven Media Engine requires Playlist names and transcoding encodes configured on the server.
Live DVR Support
Supported is Live DVR UI features which makes it possible to switch to a HLS DVR stream to scrub to recorded areas of a stream. And switch back to the WebRTC live edge stream. It is supported with Dolby.io DVR and Wowza DVR for now.
Alternative Audio Track Switching and Mixing
Alternative audio track switching and mixing is supported using Dolby.io Alt Audio multisource broadcasting features. An audio mixer is used to mix between tracks if mixing is enabled.
Virtual Meeting Background Removal
With the use of Google Mediapipe Segementation api. An included virtual background plugin. Support for dynamic background removal and chromakey rendering is provided.
This rendering view can be used as the main video stream on the publisher and will be automatically detected.
The auto background uses an AI Mediapipe feature that doesn't require a Chromakey Green Screen render. With the use of a Green Screen a Chromakey render option is available.
Background images can be added as a background texture to the video stream.
An interesting and unique feature has been included to switch to screensharing as a background in virtual mode. With a scaled camera video resized in the foreground.
Api methods is provided to switch between auto or chromakey rendering selection or turn rendering off.
With a screen mode, when switching to screenshare, the camera video will display scaled in the corner
Audio Meter
An audio meter plugin can be configured to display microphone activity and volume. An external container with a peak-meter
selector can be setup
<div class="peak-meter absolute right-4 -bottom-1.5 w-auto" style="max-width: 80px; height: 300px;"></div>
Video Conferencing
Integrated is features for WebRTC video conferencing for Wowza, Ant Media Server, Ovenmedia Engine, Dolby.io and Kurento. The supplied demo signal server backends are for the purpose of the extra signalling required for peers. A host participant can add participants in the room from the lobby area, feature a participant by first selecting them, or mute the audio being sent from that selected participant.
Api methods are available to dynamically update participant and room configs, including titles, and background images and icons.
Integrated is a publishing peer reconnection failover. And when subscribing to peers, a tracker is enabled to reconnect stalled peer subscribed streams in the room.
Supported by default is a conference studio mode to allow hosts to add/remove participants from a room and to feature a speaking participant that scales their video larger than others.
Camera Video Merger
Supplied for WebRTC video conferencing. Is a WebGL hardware accelerated camera video merger for the purpose of broadcasting and recording group calls as one stream. This can be integrated from the master and automatically start broadcasting with the master participant.
WebRTC Simulcast Multi-bitrate
For Chrome and Firefox web broadcasters and custom Dolby.io WebRTC OBS encoder. WebRTC Simulcast multi-bitrate and resolution broadcasting is supported. Has only been tested with Dolby.io that supports signalling Simulcast. Not supported in Wowza or Ant Media Server yet. Subscribers will handle the multiple layers and handle it automatically.
In the future with AV1 codec broadcasting. Layers are handled within the codec and therefore WebRTC simulcast is not needed. AV1 codec is supported by Dolby.io and experimental Chrome browsers.
Server Side Recording
Some servers allow api commands for server side recording. This is implemented for both publishers and conferencing masters. For conferencing masters with camera merger enabled, the published camera merger stream can be chosen to record.
Currently Ant Media Server, Ovenmedia Engine, and Wowza with a custom provider has server side rest api command support which requires JWT tokens configured for security. With Wowza conferencing server side recording is achieved with the custom group websocket provider.
Security
Each server feature option has their own token security features. With Wowza token security is achieved with the custom providers. Any token system can be used but JWT is configured by default with a configured secret key.
RTMP and VR Video in conferencing
RTMP publishers can join conferencing provided by notifications available in the Wowza and Ovenmedia custom websocket servers. If the stream is configured with titles and vr. Both titles and VR 360 rendering is possible. VR rendering requires the VR360 Plugin
Features
- Low latency streaming via the browser.
- One to many live streaming via WebRTC.
- Background auto removal using Google mediapipe and efficient GPU rendering and smoothing of the generated masking.
- Chromakey Green Screen background removal using efficient GPU rendering.
- Api to turn on/off virtual background rendering.
- Media device video and audio selection.
- Encoder application selections of bitrate, resolution, framerate, audio input, audio output and video sources.
- Support for external UI control if managed select menus is not suitabled.
- Recording of local video stream support with a download option.
- Toggling of audio and video device before and while publishing.
- Screensharing video capabilities using screensharing apis instead of camera and microphone.
- Screensharing toggling support between screen capture and camera. While peering the tracks are replaced in realtime. Audio is retained while screen capturing.
- Microphone Audio peak meter display option.
- Full peering events support with debug capabilities.
- Audio volume control of the microphone input and audio meter display functionality.
- Background images added as textures to the background removal video stream.
- Screensharing in mediapipe virtual mode as a background texture with a scaled camera video.
- Screensharing in screen virtual mode as a background texture with a normal scaled camera video.
- Supplied lambda and authorizer scripts for AWS Kinesis integration.
- Simulcast multi-bitrate broadcasting support.
- Server side recording command support for certain servers.
- Token security config options for servers that support it by default.
- Custom Token security options for Wowza Server using supplied custom provider modules.
- ABR and simulcast subscribe bitrate selection features where supported.
- switching to Live DVR HLS features with WebRTC as live edge.
- alternative audio track switching and mixing support with Dolby.io
Conferencing Features
- Group call conferencing in studio mode or non studio mode.
- Group conferencing features for Wowza, Dolby.io, Ant Media Server and Kurento.
- Group conferencing hardware accelerated video mixer features for subscribing and recording as one stream.
- Host group conferencing api features, for adding a participant to the room, featuring and muting participants.
- Ability to feature a participant in a conference by the host.
- RTMP publishers and VR 360 video within a conferencing room.
- Support for dynamic background removal for virtual meetings with/without Green Screens using Google Mediapipe Segementation AI or Chromakey render options.
Vue.JS Support
Vue.JS 2 is supported. The plugin needs to be treated as a 3rd party script and loaded externally before initializing the player. The CSS can be imported as normal.