mediamtx/apidocs/openapi.yaml

652 lines
15 KiB
YAML
Raw Normal View History

2021-08-07 16:28:27 +00:00
openapi: 3.0.0
info:
version: 1.0.0
title: rtsp-simple-server API
2021-09-06 15:51:08 +00:00
description: API of rtsp-simple-server, a server and proxy that supports various protocols.
2021-08-07 16:28:27 +00:00
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers:
2021-08-07 17:08:07 +00:00
- url: http://localhost:9997
2021-08-07 16:28:27 +00:00
components:
schemas:
Conf:
type: object
properties:
# general
logLevel:
type: string
logDestinations:
type: array
items:
type: string
logFile:
type: string
readTimeout:
type: string
2021-08-07 16:28:27 +00:00
writeTimeout:
type: string
2021-08-07 16:28:27 +00:00
readBufferCount:
type: integer
externalAuthenticationURL:
type: string
2021-08-07 16:28:27 +00:00
api:
type: boolean
apiAddress:
type: string
metrics:
type: boolean
metricsAddress:
type: string
pprof:
type: boolean
pprofAddress:
type: string
runOnConnect:
type: string
runOnConnectRestart:
type: boolean
2021-12-21 23:27:58 +00:00
# RTSP
2021-08-07 16:28:27 +00:00
rtspDisable:
type: boolean
protocols:
type: array
items:
type: string
encryption:
type: string
rtspAddress:
type: string
rtspsAddress:
type: string
rtpAddress:
type: string
rtcpAddress:
type: string
multicastIPRange:
type: string
multicastRTPPort:
type: integer
multicastRTCPPort:
type: integer
serverKey:
type: string
serverCert:
type: string
authMethods:
type: array
items:
type: string
2021-12-21 23:27:58 +00:00
# RTMP
2021-08-07 16:28:27 +00:00
rtmpDisable:
type: boolean
rtmpAddress:
type: string
2021-12-21 23:27:58 +00:00
# HLS
2021-08-07 16:28:27 +00:00
hlsDisable:
type: boolean
hlsAddress:
type: string
hlsAlwaysRemux:
type: boolean
Implement Low-Latency HLS (#938) * add hlsVariant parameter * hls: split muxer into variants * hls: implement fmp4 segments * hls muxer: implement low latency mode * hls muxer: support audio with fmp4 mode * hls muxer: rewrite file router * hls muxer: implement preload hint * hls muxer: add various error codes * hls muxer: use explicit flags * hls muxer: fix error in aac pts * hls muxer: fix sudden freezes with video+audio * hls muxer: skip empty parts * hls muxer: fix video FPS * hls muxer: add parameter hlsPartDuration * hls muxer: refactor fmp4 muxer * hls muxer: fix CAN-SKIP-UNTIL * hls muxer: refactor code * hls muxer: show only parts of last 2 segments * hls muxer: implementa playlist delta updates * hls muxer: change playlist content type * hls muxer: improve video dts precision * hls muxer: fix video sample flags * hls muxer: improve iphone audio support * hls muxer: improve mp4 timestamp precision * hls muxer: add offset between pts and dts * hls muxer: close muxer in case of error * hls muxer: stop logging requests with the info level * hls muxer: rename entry into sample * hls muxer: compensate video dts error over time * hls muxer: change default segment count * hls muxer: add starting gap * hls muxer: set default part duration to 200ms * hls muxer: fix audio-only streams on ios * hls muxer: add playsinline attribute to video tag of default web page * hls muxer: keep mpegts as the default hls variant * hls muxer: implement encryption * hls muxer: rewrite dts estimation * hls muxer: improve DTS precision * hls muxer: use right SPS/PPS for each sample * hls muxer: adjust part duration dynamically * add comments * update readme * hls muxer: fix memory leak * hls muxer: decrease ram consumption
2022-05-31 17:17:26 +00:00
hlsVariant:
type: string
2021-08-07 16:28:27 +00:00
hlsSegmentCount:
type: integer
hlsSegmentDuration:
type: string
Implement Low-Latency HLS (#938) * add hlsVariant parameter * hls: split muxer into variants * hls: implement fmp4 segments * hls muxer: implement low latency mode * hls muxer: support audio with fmp4 mode * hls muxer: rewrite file router * hls muxer: implement preload hint * hls muxer: add various error codes * hls muxer: use explicit flags * hls muxer: fix error in aac pts * hls muxer: fix sudden freezes with video+audio * hls muxer: skip empty parts * hls muxer: fix video FPS * hls muxer: add parameter hlsPartDuration * hls muxer: refactor fmp4 muxer * hls muxer: fix CAN-SKIP-UNTIL * hls muxer: refactor code * hls muxer: show only parts of last 2 segments * hls muxer: implementa playlist delta updates * hls muxer: change playlist content type * hls muxer: improve video dts precision * hls muxer: fix video sample flags * hls muxer: improve iphone audio support * hls muxer: improve mp4 timestamp precision * hls muxer: add offset between pts and dts * hls muxer: close muxer in case of error * hls muxer: stop logging requests with the info level * hls muxer: rename entry into sample * hls muxer: compensate video dts error over time * hls muxer: change default segment count * hls muxer: add starting gap * hls muxer: set default part duration to 200ms * hls muxer: fix audio-only streams on ios * hls muxer: add playsinline attribute to video tag of default web page * hls muxer: keep mpegts as the default hls variant * hls muxer: implement encryption * hls muxer: rewrite dts estimation * hls muxer: improve DTS precision * hls muxer: use right SPS/PPS for each sample * hls muxer: adjust part duration dynamically * add comments * update readme * hls muxer: fix memory leak * hls muxer: decrease ram consumption
2022-05-31 17:17:26 +00:00
hlsPartDuration:
type: string
hlsSegmentMaxSize:
type: string
2021-08-07 16:28:27 +00:00
hlsAllowOrigin:
type: string
Implement Low-Latency HLS (#938) * add hlsVariant parameter * hls: split muxer into variants * hls: implement fmp4 segments * hls muxer: implement low latency mode * hls muxer: support audio with fmp4 mode * hls muxer: rewrite file router * hls muxer: implement preload hint * hls muxer: add various error codes * hls muxer: use explicit flags * hls muxer: fix error in aac pts * hls muxer: fix sudden freezes with video+audio * hls muxer: skip empty parts * hls muxer: fix video FPS * hls muxer: add parameter hlsPartDuration * hls muxer: refactor fmp4 muxer * hls muxer: fix CAN-SKIP-UNTIL * hls muxer: refactor code * hls muxer: show only parts of last 2 segments * hls muxer: implementa playlist delta updates * hls muxer: change playlist content type * hls muxer: improve video dts precision * hls muxer: fix video sample flags * hls muxer: improve iphone audio support * hls muxer: improve mp4 timestamp precision * hls muxer: add offset between pts and dts * hls muxer: close muxer in case of error * hls muxer: stop logging requests with the info level * hls muxer: rename entry into sample * hls muxer: compensate video dts error over time * hls muxer: change default segment count * hls muxer: add starting gap * hls muxer: set default part duration to 200ms * hls muxer: fix audio-only streams on ios * hls muxer: add playsinline attribute to video tag of default web page * hls muxer: keep mpegts as the default hls variant * hls muxer: implement encryption * hls muxer: rewrite dts estimation * hls muxer: improve DTS precision * hls muxer: use right SPS/PPS for each sample * hls muxer: adjust part duration dynamically * add comments * update readme * hls muxer: fix memory leak * hls muxer: decrease ram consumption
2022-05-31 17:17:26 +00:00
hlsEncryption:
type: boolean
hlsServerKey:
type: string
hlsServerCert:
type: string
2021-08-07 16:28:27 +00:00
paths:
type: object
additionalProperties:
$ref: '#/components/schemas/PathConf'
PathConf:
type: object
properties:
# source
source:
type: string
sourceProtocol:
type: string
sourceAnyPortEnable:
type: boolean
sourceFingerprint:
type: string
sourceOnDemand:
type: boolean
sourceOnDemandStartTimeout:
type: string
2021-08-07 16:28:27 +00:00
sourceOnDemandCloseAfter:
type: string
2021-08-07 16:28:27 +00:00
sourceRedirect:
type: string
disablePublisherOverride:
type: boolean
fallback:
type: string
# authentication
publishUser:
type: string
publishPass:
type: string
publishIPs:
type: array
items:
type: string
readUser:
type: string
readPass:
type: string
readIPs:
type: array
items:
type: string
2021-12-21 23:27:58 +00:00
# external commands
2021-08-07 16:28:27 +00:00
runOnInit:
type: string
runOnInitRestart:
type: boolean
runOnDemand:
type: string
runOnDemandRestart:
type: boolean
runOnDemandStartTimeout:
type: string
2021-08-07 16:28:27 +00:00
runOnDemandCloseAfter:
type: string
runOnReady:
2021-08-07 16:28:27 +00:00
type: string
runOnReadyRestart:
2021-08-07 16:28:27 +00:00
type: boolean
runOnRead:
type: string
runOnReadRestart:
type: boolean
Path:
type: object
properties:
confName:
type: string
conf:
$ref: '#/components/schemas/PathConf'
source:
oneOf:
2021-08-07 17:03:07 +00:00
- $ref: '#/components/schemas/PathSourceRTSPSession'
- $ref: '#/components/schemas/PathSourceRTSPSSession'
2021-08-07 17:03:07 +00:00
- $ref: '#/components/schemas/PathSourceRTMPConn'
2021-08-20 08:12:25 +00:00
- $ref: '#/components/schemas/PathSourceRTSPSource'
- $ref: '#/components/schemas/PathSourceRTMPSource'
- $ref: '#/components/schemas/PathSourceHLSSource'
- $ref: '#/components/schemas/PathSourceRPICameraSource'
2021-08-07 16:28:27 +00:00
sourceReady:
type: boolean
tracks:
type: array
items:
type: string
enum:
- Generic
- H264
- H265
- JPEG
- MPEG2Audio
- MPEG2Video
- MPEG4Audio
- Opus
- PCMA
- PCMU
- VP8
- VP9
2021-08-07 16:28:27 +00:00
readers:
type: array
items:
oneOf:
2021-08-07 17:03:07 +00:00
- $ref: '#/components/schemas/PathReaderRTSPSession'
- $ref: '#/components/schemas/PathReaderRTSPSSession'
2021-08-07 17:03:07 +00:00
- $ref: '#/components/schemas/PathReaderRTMPConn'
- $ref: '#/components/schemas/PathReaderHLSMuxer'
PathSourceRTSPSession:
type: object
properties:
type:
type: string
2021-08-20 08:13:41 +00:00
enum: [rtspSession]
2021-08-07 17:03:07 +00:00
id:
type: string
PathSourceRTSPSSession:
type: object
properties:
type:
type: string
2021-08-20 08:13:41 +00:00
enum: [rtspsSession]
id:
type: string
2021-08-07 17:03:07 +00:00
PathSourceRTMPConn:
type: object
properties:
type:
type: string
2021-08-20 08:13:41 +00:00
enum: [rtmpConn]
2021-08-07 17:03:07 +00:00
id:
type: string
2021-08-20 08:12:25 +00:00
PathSourceRTSPSource:
type: object
properties:
type:
type: string
enum: [rtspSource]
PathSourceRTMPSource:
type: object
properties:
type:
type: string
enum: [rtmpSource]
PathSourceHLSSource:
type: object
properties:
type:
type: string
enum: [hlsSource]
PathSourceRPICameraSource:
type: object
properties:
type:
type: string
enum: [rpiCameraSource]
2021-08-07 17:03:07 +00:00
PathReaderRTSPSession:
type: object
properties:
type:
type: string
2021-08-20 08:13:41 +00:00
enum: [rtspSession]
2021-08-07 17:03:07 +00:00
id:
type: string
PathReaderRTSPSSession:
type: object
properties:
type:
type: string
2021-08-20 08:13:41 +00:00
enum: [rtspsSession]
id:
type: string
2021-08-07 17:03:07 +00:00
PathReaderRTMPConn:
type: object
properties:
type:
type: string
2021-08-20 08:13:41 +00:00
enum: [rtmpConn]
2021-08-07 17:03:07 +00:00
id:
type: string
PathReaderHLSMuxer:
type: object
properties:
type:
type: string
2021-08-18 13:49:12 +00:00
enum: [hlsMuxer]
2021-08-07 16:28:27 +00:00
RTSPSession:
type: object
properties:
created:
type: string
2021-08-07 16:28:27 +00:00
remoteAddr:
type: string
state:
type: string
enum: [idle, read, publish]
2021-08-07 16:28:27 +00:00
RTSPSSession:
type: object
properties:
remoteAddr:
type: string
state:
type: string
enum: [idle, read, publish]
2021-08-07 16:28:27 +00:00
RTMPConn:
type: object
properties:
created:
type: string
2021-08-07 16:28:27 +00:00
remoteAddr:
type: string
state:
type: string
enum: [idle, read, publish]
2021-08-07 16:28:27 +00:00
2021-11-05 16:14:31 +00:00
HLSMuxer:
type: object
properties:
created:
type: string
2021-11-05 16:14:31 +00:00
lastRequest:
type: string
PathsList:
type: object
properties:
items:
type: object
additionalProperties:
$ref: '#/components/schemas/Path'
RTSPSessionsList:
type: object
properties:
items:
type: object
additionalProperties:
$ref: '#/components/schemas/RTSPSession'
RTSPSSessionsList:
type: object
properties:
items:
type: object
additionalProperties:
$ref: '#/components/schemas/RTSPSSession'
RTMPConnsList:
type: object
properties:
items:
type: object
additionalProperties:
$ref: '#/components/schemas/RTMPConn'
2021-11-05 16:14:31 +00:00
HLSMuxersList:
type: object
properties:
items:
type: object
additionalProperties:
$ref: '#/components/schemas/HLSMuxer'
2021-08-07 16:28:27 +00:00
paths:
2021-08-07 17:08:07 +00:00
/v1/config/get:
2021-08-07 16:28:27 +00:00
get:
operationId: configGet
summary: returns the configuration.
2021-08-07 16:28:27 +00:00
description: ''
responses:
'200':
description: the request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/Conf'
2022-02-16 21:47:37 +00:00
'400':
description: invalid request.
2021-08-07 16:28:27 +00:00
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/config/set:
2021-08-07 16:28:27 +00:00
post:
operationId: configSet
summary: changes the configuration.
2021-10-06 11:33:35 +00:00
description: all fields are optional. paths can't be edited with this request, use /v1/config/paths/{operation}/{name} to edit them.
2021-08-07 17:03:07 +00:00
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Conf'
2021-08-07 16:28:27 +00:00
responses:
'200':
description: the request was successful.
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/config/paths/add/{name}:
2021-08-07 16:28:27 +00:00
post:
operationId: configPathsAdd
summary: adds the configuration of a path.
2021-08-07 17:03:07 +00:00
description: all fields are optional.
2021-08-07 16:28:27 +00:00
parameters:
- name: name
in: path
required: true
description: the name of the path.
schema:
type: string
2021-08-07 17:03:07 +00:00
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PathConf'
2021-08-07 16:28:27 +00:00
responses:
'200':
description: the request was successful.
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/config/paths/edit/{name}:
2021-08-07 16:28:27 +00:00
post:
operationId: configPathsEdit
summary: changes the configuration of a path.
2021-08-07 17:03:07 +00:00
description: all fields are optional.
2021-08-07 16:28:27 +00:00
parameters:
- name: name
in: path
required: true
description: the name of the path.
schema:
type: string
2021-08-07 17:03:07 +00:00
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PathConf'
2021-08-07 16:28:27 +00:00
responses:
'200':
description: the request was successful.
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/config/paths/remove/{name}:
2021-08-07 16:28:27 +00:00
post:
operationId: configPathsRemove
summary: removes the configuration of a path.
description: ''
parameters:
- name: name
in: path
required: true
description: the name of the path.
schema:
type: string
responses:
'200':
description: the request was successful.
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/paths/list:
2021-08-07 16:28:27 +00:00
get:
operationId: pathsList
summary: returns all active paths.
description: ''
responses:
'200':
description: the request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/PathsList'
2021-08-07 16:28:27 +00:00
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/rtspsessions/list:
2021-08-07 16:28:27 +00:00
get:
operationId: rtspSessionsList
summary: returns all active RTSP sessions.
description: ''
responses:
'200':
description: the request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/RTSPSessionsList'
2021-08-07 16:28:27 +00:00
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/rtspsessions/kick/{id}:
2021-08-07 16:28:27 +00:00
post:
operationId: rtspSessionsKick
summary: kicks out a RTSP session from the server.
description: ''
parameters:
- name: id
in: path
required: true
description: the ID of the session.
schema:
type: string
responses:
'200':
description: the request was successful.
'400':
description: invalid request.
'500':
description: internal server error.
/v1/rtspssessions/list:
get:
operationId: rtspsSessionsList
summary: returns all active RTSPS sessions.
description: ''
responses:
'200':
description: the request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/RTSPSSessionsList'
'400':
description: invalid request.
'500':
description: internal server error.
/v1/rtspssessions/kick/{id}:
post:
operationId: rtspsSessionsKick
summary: kicks out a RTSPS session from the server.
description: ''
parameters:
- name: id
in: path
required: true
description: the ID of the session.
schema:
type: string
responses:
'200':
description: the request was successful.
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/rtmpconns/list:
2021-08-07 16:28:27 +00:00
get:
operationId: rtmpConnsList
summary: returns all active RTMP connections.
description: ''
responses:
'200':
description: the request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/RTMPConnsList'
2021-08-07 16:28:27 +00:00
'400':
description: invalid request.
'500':
description: internal server error.
2021-08-07 17:08:07 +00:00
/v1/rtmpconns/kick/{id}:
2021-08-07 16:28:27 +00:00
post:
operationId: rtmpConnsKick
summary: kicks out a RTMP connection from the server.
description: ''
parameters:
- name: id
in: path
required: true
description: the ID of the connection.
schema:
type: string
responses:
'200':
description: the request was successful.
'400':
description: invalid request.
'500':
description: internal server error.
2021-11-05 16:14:31 +00:00
/v1/hlsmuxers/list:
get:
operationId: hlsMuxersList
summary: returns all active HLS muxers.
description: ''
responses:
'200':
description: the request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/HLSMuxersList'
'400':
description: invalid request.
'500':
description: internal server error.