jitsi
Pull remote tracks from a Jitsi meeting using Jitsi as a Service or your own deployment.
Product links: jitsi.org · JaaS · lib-jitsi-meet API
Example
Section titled “Example”curl -X POST "https://api.avflow.dev/v1/jobs" \ -H "Authorization: Bearer ${AVFLOW_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "name": "jitsi-ingest", "sources": [{ "name": "conf_src", "type": "jitsi", "config": { "domain": "meet.jit.si", "roomName": "MyRoomABC123", "select": { "mediaTypes": ["video", "audio"] } } }], "nodes": [], "sinks": [{ "name": "rtmp_out", "type": "rtmp_push", "inputs": ["conf_src"], "config": { "urls": ["rtmp://live.example.com/app/key"], "encoding": { "videoCodec": "h264", "audioCodec": "aac" } } }] }'Config
Section titled “Config”| Field | Type | Required | Description |
|---|---|---|---|
domain | string | Yes | Jitsi deployment host (e.g. 8x8.vc for JaaS, meet.jit.si for public). Used for connection / MUC defaults when connectionOptions is omitted — not for loading the SDK. |
roomName | string | Yes | Conference room name. |
token | string | No | JWT for secured rooms (JaaS). |
appId | string | No | JaaS application ID. |
xmppId | string | No | XMPP login JID. A recorder account on the deployment’s hiddenDomain (e.g. recorder@recorder.meet.example.com) is hidden from other jitsi-meet clients. Must be set with xmppPassword. |
xmppPassword | string | No | Password for xmppId. |
connectionOptions | object | No | Override XMPP hosts and BOSH/WebSocket URLs when they are not conference.<domain> / wss://<domain>/xmpp-websocket. |
conferenceOptions | object | No | Subscriber session settings: p2p, channelLastN, hiddenDomain, videoQuality. |
select | SelectFilter | No | Participant / track filters. |
Connection options
Section titled “Connection options”Standard Jitsi deployments need only domain and roomName. Use connectionOptions when the public host differs from the XMPP virtual host (docker-jitsi, split MUC, BOSH-only).
{ "domain": "meet.example.com", "roomName": "MyRoom", "connectionOptions": { "hosts": { "domain": "meet.jitsi", "muc": "muc.meet.jitsi", "focus": "focus.meet.jitsi" }, "serviceUrl": "wss://meet.example.com/xmpp-websocket?room=MyRoom", "bosh": "https://meet.example.com/http-bind" }}| Key | Meaning |
|---|---|
hosts.domain | XMPP virtual host (can differ from config.domain) |
hosts.muc | MUC domain |
hosts.focus | Jicofo JID |
serviceUrl | XMPP WebSocket URL |
bosh | BOSH URL (https://…/http-bind). Used when serviceUrl is omitted |
If you set hosts, include domain, muc, and focus together — the object replaces the defaults rather than merging field by field.
Conference options
Section titled “Conference options”conferenceOptions configures how this subscriber receives media. Local-device flags such as startSilent / startAudioMuted have no effect: a source does not publish a microphone.
| Key | Type | What it does |
|---|---|---|
p2p.enabled | boolean | Direct peer connection when the room has exactly two participants. Set false to stay on the Jitsi Videobridge. |
channelLastN | number | How many remote videos to receive (-1 = all). |
hiddenDomain | string | Treat occupants on this XMPP domain as hidden. |
videoQuality.codecPreferenceOrder | string[] | Preferred receive codecs, e.g. ["vp8", "vp9"]. |
{ "conferenceOptions": { "p2p": { "enabled": false }, "channelLastN": -1 }}Hidden recorder
Section titled “Hidden recorder”On a self-hosted Jitsi with Jibri’s hidden domain, authenticate as that recorder account so other clients do not show this source in the participant UI. The WebSocket still connects to domain; xmppId is only the XMPP login:
{ "name": "conf_src", "type": "jitsi", "config": { "domain": "meet.example.com", "roomName": "MyRoomABC123", "xmppId": "recorder@recorder.meet.example.com", "xmppPassword": "<recorder-password>" }}This needs a Prosody virtual host matching config.hiddenDomain in jitsi-meet (the same call-login account Jibri uses). JaaS and meet.jit.si do not give customers those credentials, so JWT join stays visible. Both the Chrome and native pipelines honor xmppId / xmppPassword.
Pricing
Section titled “Pricing”RTC video source tier. Source pricing.