IP video production orchestrator

The Dynamic Media Facility, from the diagram to the gallery.

Bobi.Studio drives a complete video production chain across a cluster of Docker nodes, around the EBU’s MXL bus: video and audio travel uncompressed end to end, replicated between nodes over RDMA. SMPTE ST 2110, SRT and RTMP coexist, source by source. One interface to deploy, wire, control and monitor.

Inputs
ST 2110 · SRT · RTMP
Outputs
ST 2110 · UDP · SRT · WebRTC
Data plane
MTL · DPDK · AF-XDP
NMOS
IS-04/05/07/09/12/14
Clock
PTP IEEE 1588
Licence
GNU GPL v3
DMF SupporterBOBi is a DMF Supporter: we publicly support the vision of an open, interoperable Dynamic Media Facility ecosystem, aligned with the EBU DMF Reference Architecture. (opens in a new tab)
01

What it is

A control plane. The nodes do the work; the controller knows what they are doing.

A controller

A central web application holds the inventory, deploys containers, keeps track of what is wired to what, and polls the fleet continuously. It carries no video itself.

Nodes

Enrolled Debian servers, each with its own agent. They run the production containers: ingest, composition, encoding, transmit. Adding one is a single command.

A memory bus

Inside a node, pictures and sound never go back onto the network: they live in shared memory on the MXL bus, the Media eXchange Layer that came out of the EBU’s work. Between nodes, replication runs over RDMA.

Plugins

Every processing function — multiviewer, mixer, encoder, colour corrector, converter — is an independently versioned plugin running in its own container. It installs from a catalogue, with no repository to clone and nothing else to touch.

The scope runs from the network card to the gallery panel: host preparation, multicast allocation, PTP clocking, resource measurement, broadcast control protocols, and controller high availability.

02

The signal chain

One model: everything attaches to the bus, nothing is hard-wired.

PROCESSING AND COMPOSITIONMultiviewColourDelayUDCPyramidMXL BUS · SHARED MEMORY/dev/shm/mxlINPUTSOUTPUTSST 2110 enginereceiveStream InSRT · RTMPST 2110 enginetransmitStreamsUDP · SRT · WebRTCST 2110 inputs and outputs are optional: a chain can run entirely on SRT or RTMP.
ST 2110 inputs and outputs are optional: a chain can run entirely on SRT or RTMP.

A container does not know its neighbours, only the flows it consumes and the ones it produces. Changing a source is changing a patch: the cabling page shows the real topology, switches live, and inserts a converter when two formats do not match.

That is what makes ST 2110 optional. The bus only knows video, audio and data essences; how they get in and out is a matter of edge containers. A 2110 gallery plugs in the MTL engine; a remote production comes in over SRT and goes back out over SRT, with no dedicated card, no PTP and no multicast. The processing, the wiring, the macros and the monitoring are the same in both cases.

03

The console

State comes first. A degraded container is visible without looking for it.

Bobi.Studio dashboard: production chain, MXL bus metrics, alerts
The home page answers “is this nominal?” first. The alert band shows only what is open; the full history lives in the Monitoring page.

Three themes, one product: a neutral dark for the workstation, a light one for a daylit office, and a warm dark with an amber accent for the gallery. Status is never carried by colour alone: every badge has its label, readable on a washed-out monitor at the back of a gallery. The interface is fully available in French and English.

04

The fleet in figures

What the distribution covers today.

8
container types
Each one is a versioned plugin, deployed and updated independently of the controller. Four more are in preparation.
13
integration services
NMOS, Ember+, TSL, SAP/SDP, SNMP, Skaarhoj, RDMA, WebRTC gateway, media and storage management.
5 s
monitoring period
The whole fleet is re-polled continuously; a container that falls over is restarted and logged.
3
gallery themes
Same components, three lighting conditions: neutral, daylight, dark gallery.
2
languages shipped
French and English across the entire interface and help. Any further language is added from the interface, with no code change.
GPL v3
licence
Full source, free to redistribute and modify.
05

What it speaks

The protocols of a production broadcast IP plant.

Select an acronym to see what it does here.

SMPTE ST 2110-20

Uncompressed video over IP. The engine receives and transmits it straight from the network card, without going through the kernel, progressive or field-native interlaced.

ST 2110-30

PCM audio over IP, up to 8 channels of L24 at 48 kHz. Audio travels in its own flow and is re-patched independently of video.

ST 2110-40

Ancillary data: timecode, subtitles, AFD. Encoded per RFC 8331 and carried in a separate flow, it crosses the chain without being regenerated.

ST 2022-7

Transport redundancy. The same content leaves on two paths and the receiver rebuilds from both, across two ports or two paths on a single card.

ST 2059 / PTP IEEE 1588

The shared clock, without which there is no chain, only flows. Every node disciplines itself to the site grandmaster; the offset is sampled continuously and a loss of lock raises an alert.

AMWA IS-04

Discovery and registration. Containers publish their senders and receivers to the site registry, which becomes the directory of the production.

IS-05

Connection management. A third-party broadcast controller activates and switches connections; session descriptions are produced and consumed on both sides.

IS-07

Event & Tally. Tally is published over NMOS alongside TSL: one Source per flow and per level, aligned with the MXL flows already exposed. Two transports for two audiences, one state.

IS-09

System Parameters. The plant’s PTP domain is published once and read by conformant devices, instead of being set device by device — where a disagreement shows up as symptoms that look like anything but a domain disagreement.

IS-12

The control model exposed over WebSocket on a dedicated port, for event-driven control.

IS-14

The same model exposed over REST, with bulk backup and restore of a device’s properties.

MS-05-02

The object model itself: the standard description of what a device is and what can be set on it. IS-12 and IS-14 are only two transports on top of one shared model.

BCP-002-01

Resource grouping. The senders and receivers of one device are declared as a set, with group hints that stay stable over time.

BCP-002-02

Asset identity: manufacturer, model, serial number. Exposed from a single source, shared with the device manager of the control model.

BCP-008-01

Receiver monitors. The state of every Rx, flow present, synchronisation, errors, published continuously in the control model.

BCP-008-02

The same on the sender side: what leaves, and in what state.

SDP

Session description: the format describing a flow, its size, its rate and its reference clock. Produced for every sender, read for every receiver.

SAP / SDP (RFC 2974)

Announcement and discovery of audio flows on the network. It is the only mechanism shared by AES67, Ravenna and Dante in AES67 mode — none of them speaks NMOS. Our senders announce themselves, and discovered third-party flows are checked against the formats the engine can receive and against the PTP domain of our own announcements.

IGMPv3

Multicast membership. One group per flow, reserved atomically by the orchestrator, with membership applied on the interface carrying it.

SNMPv3

An SNMPv3 agent in authPriv, READ ONLY, served by the active controller. The MIB is a cluster MIB: it returns the aggregated state of the fleet, not that of one machine. Traps are a channel of the alerting service.

Ember+

A control tree published on production slots, addressable by a third-party supervision system without knowing the internal technical handles.

TSL UMD 5.0

Exchange of labels and tally with your third-party tools, broadcast controller included. The protocol works both ways: our video walls emit them, and we consume the ones that come from elsewhere.

Skaarhoj Raw Panel

Skaarhoj panels over their native protocol: Quick Bar, named presets and source routing.

SRT

Reliable transport over a network you do not control, with loss recovery. On the way in as well as on the way out.

RTMP

Ingest from an encoder or a production application, as a server (the source pushes) or as a pull.

WHIP / WHEP

Standardised WebRTC signalling: WHIP to push to the gateway, WHEP to play in a browser. This is what feeds the previews and the monitoring panel.

RTSP

Ingest into the media gateway when WHIP does not suit the source.

MPEG-TS

The container for UDP and SRT outputs, with video and audio tracks multiplexed together.

H.264

Output video codec, adjustable in bitrate, preset and GOP. The default choice when compatibility matters most.

HEVC

Output video codec to prefer when bandwidth matters more than decoder compatibility.

AAC

Audio codec for UDP and SRT destinations, all tracks included.

Opus

Audio codec for WebRTC destinations, on the first track.

MXL

Media eXchange Layer: the shared-memory bus everything attaches to inside a node. It is not our format: it is the exchange layer called for by the EBU Dynamic Media Facility Reference Architecture, published under the Apache 2.0 licence. Bobi.Studio builds on its SDK rather than inventing a proprietary transport. Since BCP-007-03, the bus flows are published as NMOS resources under the urn:x-nmos:transport:mxl transport: a third-party controller sees our internal graph the way it sees any other device on the network.

RDMA / RoCE

Memory-bus replication between nodes without traversing the network stack, spread across several ports and with automatic link reconciliation.

NMOS support does not stop at registration: the MS-05-02 control model is published over two transports, IS-12 over WebSocket and IS-14 over REST, and the BCP-008 monitors report the real state of every receiver and every sender.

The code is open.

Bobi.Studio is free software published under the GNU GPL v3. The repository holds the orchestrator, the node agent, the container plugins and the installation documentation.