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
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.
The signal chain
One model: everything attaches to the bus, nothing is hard-wired.
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.
The console
State comes first. A degraded container is visible without looking for it.

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.
The fleet in figures
What the distribution covers today.
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.