239 lines
10 KiB
JSON
239 lines
10 KiB
JSON
{
|
|
"$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"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|