{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "format_version": { "type": "integer", "description": "Identifier for parsing this file.\n- v3 introduced 'ffmpeg_hls_muxer' to services/recommended/output\n - v2 introduced 'alt_names' to services" }, "services": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the streaming service. Will be displayed in the Service dropdown.", "minLength": 1 }, "common": { "type": "boolean", "description": "Whether or not the service is shown in the list before it is expanded to all services by the user.", "default": false }, "stream_key_link": { "$ref": "#/definitions/saneUrl", "description": "Link where a logged-in user can find the 'stream key', presented as a button alongside the stream key field." }, "supported video codecs": { "type": "array", "description": "Video codecs that are supported by the service.", "items": { "type": "string", "description": "Short-form codec names.", "minLength": 1, "enum": [ "h264", "hevc" ] } }, "supported audio codecs": { "type": "array", "description": "Audio codecs that are supported by the service.", "items": { "type": "string", "description": "Short-form codec names.", "minLength": 1, "enum": [ "aac", "opus" ] } }, "servers": { "type": "array", "description": "List of servers.", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the server (e.g. location, primary/backup), displayed in the Server dropdown.", "minLength": 1 }, "url": { "$ref": "#/definitions/serviceUri", "description": "RTMP(S) or HLS URL of the ingest server.", "minLength": 1 } }, "additionalProperties": false, "required": [ "name", "url" ] }, "default": [ { "name": "", "url": "" } ], "minItems": 1, "additionalItems": true }, "recommended": { "type": "object", "description": "Recommended service settings. Users will be unable to choose values outside of these by default, so choose recommended values carefully.", "properties": { "keyint": { "type": "integer", "description": "Keyframe interval (seconds)." }, "max video bitrate": { "type": "integer", "description": "Highest supported video bitrate (kbps)." }, "max audio bitrate": { "type": "integer", "description": "Highest supported audio bitrate (kbps)." }, "x264opts": { "type": "string", "description": "Additional x264 encoder options. Space-separated.", "pattern": "^(\\S+=\\S+\\s*)+$" }, "output": { "type": "string", "description": "OBS output module used.", "enum": [ "rtmp_output", "ffmpeg_hls_muxer", "ftl_output" ] }, "profile": { "type": "string", "description": "H.264 Profile.", "minLength": 1, "enum": [ "high", "main", "baseline" ] }, "bframes": { "type": "integer", "description": "Maximum allowed number of B-Frames." }, "supported resolutions": { "type": "array", "description": "List of supported resolutions in format {width}x{height}", "items": { "$ref": "#/definitions/resolution" }, "minItems": 1, "additionalItems": true }, "max fps": { "type": "integer", "description": "Maximum supported framerate." }, "bitrate matrix": { "type": "array", "description": "List of resolutions and frame rate combinations with their recommended maximum bitrate.", "items": { "type": "object", "properties": { "res": { "$ref": "#/definitions/resolution", "description": "Resolution in format {width}x{height}" }, "fps": { "type": "integer", "description": "Frame rate" }, "max bitrate": { "type": "integer", "description": "Maximum bitrate in kbps." } }, "minItems": 1, "additionalProperties": false, "required": [ "res", "fps", "max bitrate" ] }, "default": [ { "res": "", "fps": "", "max bitrate": "" } ], "additionalItems": true } }, "additionalProperties": false }, "more_info_link": { "$ref": "#/definitions/saneUrl", "description": "Link that provides additional info about the service, presented in the UI as a button next to the services dropdown." }, "alt_names": { "type": "array", "description": "Previous names of the service used for migrating existing users to the updated entry.", "items": { "type": "string", "minLength": 1 }, "default": [ "" ] } }, "additionalProperties": false, "required": [ "name", "servers" ] }, "additionalItems": true } }, "additionalProperties": true, "required": [ "format_version", "services" ], "definitions": { "resolution": { "type": "string", "pattern": "^\\d+x\\d+$", "default": "" }, "saneUrl": { "type": "string", "format": "uri", "pattern": "^https?://.+", "default": "https://" }, "serviceUri": { "anyOf": [ { "type": "string", "format": "uri", "pattern": "^(https|http|rtmps|rtmp|srt|rist)?://" }, { "type": "string", "format": "hostname" } ] } } }