OvenMedia WebRTC Group Call with RTMP and VR

WebRTC Conferencing for OvenMediaEngine. RTMP and VR subscribe.

Note: Not a live demo, server configuration is just for example. For live working example try the Millicast Publisher and Subscriber example. Or AWS Kinesis Publisher and Subscriber example.

Note: To feature a participant select them first or add their stream name to the api method arguments.

Example of subscribing to RTMP streams in a conference room, with publishing notified by the custom module. With a VR configuration using the VR 360 Plugin.

Using the custom group websocket provider for Ovenmedia Engine. Notification of RTMP published streams to subscribe to is possible. If also configured using the VR360 plugin, playing and rendering a VR RTMP stream is possible.

RTMP stream notification is required to collect streams via the OME api.

RTMP streams require to be a base64 encoded string of properties with the room name as prefix. This data can then be decoded to configure with. Configure vr if a VR stream. OME has no support for stream properties or query strings so base64 strings is required.

{ "name": "Cb7Uhx4E7a6K476q", "title": "RTMP VR Participant", "vr": true }

` room1-eyAibmFtZSI6ICJDYjdVaHg0RTdhNks0NzZxIiwgInRpdGxlIjogIlJUTVAgVlIgUGFydGljaXBhbnQiLCAidnIiOiB0cnVlIH0=

If RTMP streams are to be subscribed as HLS, which may provide 608 caption support. Enable the adhocHls config.

   <div class="flex w-full">
          <div id="ovenmedia-conference-rtmp" class=""></div>
  <script type="text/javascript">
  	var player = flowplayer("#ovenmedia-conference-rtmp", {
    "clip": {
        "live": true,
        "sources": [
                "src": "C6Lx6ku6FEXgKtt",
                "type": "application/webrtc"
        "title": "Participant 1",
        "vr": false
    "rtc": {
        "adhocHls": false,
        "applicationName": "app",
        "autoStartDevice": true,
        "buttons": false,
        "conference": {
            "container": "#conference-container",
            "master": true
        "debug": true,
        "ovenmedia": {
            "adhocCheck": true,
            "policy": "",
            "roomCheckInterval": 5000,
            "roomServerURL": "rtc.electroteque.org:8444/groupcall",
            "transportTcp": true
        "preferredCodecs": null,
        "publisher": true,
        "recording": {
            "mimeType": "video/mp4",
            "name": "C6Lx6ku6FEXgKtt",
            "server": true
        "roomName": "room1",
        "seperateScreen": true,
        "server": "ovenmedia-conference",
        "serverURL": "",
        "wsSecure": false
    "share": false

player.on("selectedParticipant", (e, participant) => {
console.log("selected participant", participant);
}).on("unselectedParticipant", (e, participant) => {
console.log("unselected participant", participant);
}).on("participantleft", (e, sender) => {
}).on("participantfeatured", (e, sender) => {
}).on("participantunfeatured", (e, sender) => {
}).on("leaveroom", e => {
}).on("roomjoinfailed", e => {
}).on("existingparticipants", (e, sender) => {