mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-07 17:21:34 +08:00
538 lines
15 KiB
YAML
538 lines
15 KiB
YAML
openapi: 3.1.0
|
|
|
|
info:
|
|
title: go2rtc
|
|
license: { name: MIT,url: https://opensource.org/licenses/MIT }
|
|
version: 1.0.0
|
|
contact: { url: https://github.com/AlexxIT/go2rtc }
|
|
description: |
|
|
Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc.
|
|
|
|
servers:
|
|
- url: http://localhost:1984
|
|
|
|
components:
|
|
parameters:
|
|
stream_src_path:
|
|
name: src
|
|
in: path
|
|
description: Source stream name
|
|
required: true
|
|
schema: { type: string }
|
|
example: camera1
|
|
stream_dst_path:
|
|
name: dst
|
|
in: path
|
|
description: Destination stream name
|
|
required: true
|
|
schema: { type: string }
|
|
example: camera1
|
|
stream_src_query:
|
|
name: src
|
|
in: query
|
|
description: Source stream name
|
|
required: true
|
|
schema: { type: string }
|
|
example: camera1
|
|
mp4_filter:
|
|
name: mp4
|
|
in: query
|
|
description: MP4 codecs filter
|
|
required: false
|
|
schema:
|
|
type: string
|
|
enum: [ "", flac, all ]
|
|
example: flac
|
|
video_filter:
|
|
name: video
|
|
in: query
|
|
description: Video codecs filter
|
|
schema:
|
|
type: string
|
|
enum: [ "", all, h264, h265, mjpeg ]
|
|
example: h264,h265
|
|
audio_filter:
|
|
name: audio
|
|
in: query
|
|
description: Audio codecs filter
|
|
schema:
|
|
type: string
|
|
enum: [ "", all, aac, opus, pcm, pcmu, pcma ]
|
|
example: aac
|
|
responses:
|
|
discovery:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
example: { streams: [ { "name": "Camera 1","url": "..." } ] }
|
|
webtorrent:
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
example: { share: AKDypPy4zz, pwd: H0Km1HLTTP }
|
|
|
|
tags:
|
|
- name: Application
|
|
description: "[Module: API](https://github.com/AlexxIT/go2rtc#module-api)"
|
|
- name: Config
|
|
description: "[Configuration](https://github.com/AlexxIT/go2rtc#configuration)"
|
|
- name: Streams list
|
|
description: "[Module: Streams](https://github.com/AlexxIT/go2rtc#module-streams)"
|
|
- name: Consume stream
|
|
- name: Snapshot
|
|
- name: Produce stream
|
|
- name: Discovery
|
|
- name: ONVIF
|
|
- name: RTSPtoWebRTC
|
|
- name: WebTorrent
|
|
description: "[Module: WebTorrent](https://github.com/AlexxIT/go2rtc#module-webtorrent)"
|
|
- name: Debug
|
|
|
|
paths:
|
|
/api:
|
|
get:
|
|
summary: Get application info
|
|
tags: [ Application ]
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
example: { config_path: "/config/go2rtc.yaml",host: "192.168.1.123:1984",rtsp: { listen: ":8554",default_query: "video&audio" },version: "1.5.0" }
|
|
|
|
/api/exit:
|
|
post:
|
|
summary: Close application
|
|
tags: [ Application ]
|
|
parameters:
|
|
- name: code
|
|
in: query
|
|
description: Application exit code
|
|
required: false
|
|
schema: { type: integer }
|
|
example: 100
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
/api/restart:
|
|
post:
|
|
summary: Restart Daemon
|
|
description: Restarts the daemon.
|
|
tags: [ Application ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
/api/config:
|
|
get:
|
|
summary: Get main config file content
|
|
tags: [ Config ]
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/yaml: { example: "streams:..." }
|
|
post:
|
|
summary: Rewrite main config file
|
|
tags: [ Config ]
|
|
requestBody:
|
|
content:
|
|
"*/*": { example: "streams:..." }
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
patch:
|
|
summary: Merge changes to main config file
|
|
tags: [ Config ]
|
|
requestBody:
|
|
content:
|
|
"*/*": { example: "streams:..." }
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
|
|
|
|
/api/streams:
|
|
get:
|
|
summary: Get all streams info
|
|
tags: [ Streams list ]
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json: { example: { camera1: { producers: [ ],consumers: [ ] } } }
|
|
put:
|
|
summary: Create new stream
|
|
tags: [ Streams list ]
|
|
parameters:
|
|
- name: src
|
|
in: query
|
|
description: Stream source (URI)
|
|
required: true
|
|
schema: { type: string }
|
|
example: "rtsp://rtsp:12345678@192.168.1.123/av_stream/ch0"
|
|
- name: name
|
|
in: query
|
|
description: Stream name
|
|
required: false
|
|
schema: { type: string }
|
|
example: camera1
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
patch:
|
|
summary: Update stream source
|
|
tags: [ Streams list ]
|
|
parameters:
|
|
- name: src
|
|
in: query
|
|
description: Stream source (URI)
|
|
required: true
|
|
schema: { type: string }
|
|
example: "rtsp://rtsp:12345678@192.168.1.123/av_stream/ch0"
|
|
- name: name
|
|
in: query
|
|
description: Stream name
|
|
required: true
|
|
schema: { type: string }
|
|
example: camera1
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
delete:
|
|
summary: Delete stream
|
|
tags: [ Streams list ]
|
|
parameters:
|
|
- name: src
|
|
in: query
|
|
description: Stream name
|
|
required: true
|
|
schema: { type: string }
|
|
example: camera1
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
post:
|
|
summary: Send stream from source to destination
|
|
description: "[Stream to camera](https://github.com/AlexxIT/go2rtc#stream-to-camera)"
|
|
tags: [ Streams list ]
|
|
parameters:
|
|
- name: src
|
|
in: query
|
|
description: Stream source (URI)
|
|
required: true
|
|
schema: { type: string }
|
|
example: "ffmpeg:http://example.com/song.mp3#audio=pcma#input=file"
|
|
- name: dst
|
|
in: query
|
|
description: Destination stream name
|
|
required: true
|
|
schema: { type: string }
|
|
example: camera1
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
|
|
|
|
/api/streams?src={src}:
|
|
get:
|
|
summary: Get stream info in JSON format
|
|
tags: [ Consume stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
responses:
|
|
"200":
|
|
description: ""
|
|
content:
|
|
application/json:
|
|
example: { producers: [ { url: "rtsp://rtsp:12345678@192.168.1.123/av_stream/ch0" } ], consumers: [ ] }
|
|
|
|
/api/webrtc?src={src}:
|
|
post:
|
|
summary: Get stream in WebRTC format (WHEP)
|
|
description: "[Module: WebRTC](https://github.com/AlexxIT/go2rtc#module-webrtc)"
|
|
tags: [ Consume stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
requestBody:
|
|
description: |
|
|
Support:
|
|
- JSON format (`Content-Type: application/json`)
|
|
- WHEP standard (`Content-Type: application/sdp`)
|
|
- raw SDP (`Content-Type: anything`)
|
|
required: true
|
|
content:
|
|
application/json: { example: { type: offer, sdp: "v=0..." } }
|
|
"application/sdp": { example: "v=0..." }
|
|
"*/*": { example: "v=0..." }
|
|
|
|
responses:
|
|
"200":
|
|
description: "Response on JSON or raw SDP"
|
|
content:
|
|
application/json: { example: { type: answer, sdp: "v=0..." } }
|
|
application/sdp: { example: "v=0..." }
|
|
"201":
|
|
description: "Response on `Content-Type: application/sdp`"
|
|
content:
|
|
application/sdp: { example: "v=0..." }
|
|
|
|
/api/stream.mp4?src={src}:
|
|
get:
|
|
summary: Get stream in MP4 format (HTTP progressive)
|
|
description: "[Module: MP4](https://github.com/AlexxIT/go2rtc#module-mp4)"
|
|
tags: [ Consume stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
- name: duration
|
|
in: query
|
|
description: Limit the length of the stream in seconds
|
|
required: false
|
|
schema: { type: string }
|
|
example: 15
|
|
- name: filename
|
|
in: query
|
|
description: Download as a file with this name
|
|
required: false
|
|
schema: { type: string }
|
|
example: camera1.mp4
|
|
- $ref: "#/components/parameters/mp4_filter"
|
|
- $ref: "#/components/parameters/video_filter"
|
|
- $ref: "#/components/parameters/audio_filter"
|
|
responses:
|
|
200:
|
|
description: ""
|
|
content: { video/mp4: { example: "" } }
|
|
|
|
/api/stream.m3u8?src={src}:
|
|
get:
|
|
summary: Get stream in HLS format
|
|
description: "[Module: HLS](https://github.com/AlexxIT/go2rtc#module-hls)"
|
|
tags: [ Consume stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
- $ref: "#/components/parameters/mp4_filter"
|
|
- $ref: "#/components/parameters/video_filter"
|
|
- $ref: "#/components/parameters/audio_filter"
|
|
responses:
|
|
200:
|
|
description: ""
|
|
content: { application/vnd.apple.mpegurl: { example: "" } }
|
|
|
|
/api/stream.mjpeg?src={src}:
|
|
get:
|
|
summary: Get stream in MJPEG format
|
|
description: "[Module: MJPEG](https://github.com/AlexxIT/go2rtc#module-mjpeg)"
|
|
tags: [ Consume stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
responses:
|
|
200:
|
|
description: ""
|
|
content: { multipart/x-mixed-replace: { example: "" } }
|
|
|
|
|
|
|
|
/api/frame.jpeg?src={src}:
|
|
get:
|
|
summary: Get snapshot in JPEG format
|
|
description: "[Module: MJPEG](https://github.com/AlexxIT/go2rtc#module-mjpeg)"
|
|
tags: [ Snapshot ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
responses:
|
|
200:
|
|
description: ""
|
|
content: { image/jpeg: { example: "" } }
|
|
/api/frame.mp4?src={src}:
|
|
get:
|
|
summary: Get snapshot in MP4 format
|
|
description: "[Module: MP4](https://github.com/AlexxIT/go2rtc#module-mp4)"
|
|
tags: [ Snapshot ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
responses:
|
|
200:
|
|
description: ""
|
|
content: { video/mp4: { example: "" } }
|
|
|
|
|
|
|
|
/api/webrtc?dst={dst}:
|
|
post:
|
|
summary: Post stream in WebRTC format
|
|
description: "[Incoming: WebRTC/WHIP](https://github.com/AlexxIT/go2rtc#incoming-webrtcwhip)"
|
|
tags: [ Produce stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_dst_path"
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/stream.flv?dst={dst}:
|
|
post:
|
|
summary: Post stream in FLV format
|
|
description: "[Incoming sources](https://github.com/AlexxIT/go2rtc#incoming-sources)"
|
|
tags: [ Produce stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_dst_path"
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/stream.ts?dst={dst}:
|
|
post:
|
|
summary: Post stream in MPEG-TS format
|
|
description: "[Incoming sources](https://github.com/AlexxIT/go2rtc#incoming-sources)"
|
|
tags: [ Produce stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_dst_path"
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/stream.mjpeg?dst={dst}:
|
|
post:
|
|
summary: Post stream in MJPEG format
|
|
description: "[Incoming sources](https://github.com/AlexxIT/go2rtc#incoming-sources)"
|
|
tags: [ Produce stream ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_dst_path"
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
|
|
|
|
/api/dvrip:
|
|
get:
|
|
summary: DVRIP cameras discovery
|
|
description: "[Source: DVRIP](https://github.com/AlexxIT/go2rtc#source-dvrip)"
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
/api/ffmpeg/devices:
|
|
get:
|
|
summary: FFmpeg USB devices discovery
|
|
description: "[Source: FFmpeg Device](https://github.com/AlexxIT/go2rtc#source-ffmpeg-device)"
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/ffmpeg/hardware:
|
|
get:
|
|
summary: FFmpeg hardware transcoding discovery
|
|
description: "[Hardware acceleration](https://github.com/AlexxIT/go2rtc/wiki/Hardware-acceleration)"
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/hass:
|
|
get:
|
|
summary: Home Assistant cameras discovery
|
|
description: "[Source: Hass](https://github.com/AlexxIT/go2rtc#source-hass)"
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/homekit:
|
|
get:
|
|
summary: HomeKit cameras discovery
|
|
description: "[Source: HomeKit](https://github.com/AlexxIT/go2rtc#source-homekit)"
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/nest:
|
|
get:
|
|
summary: Nest cameras discovery
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/onvif:
|
|
get:
|
|
summary: ONVIF cameras discovery
|
|
description: "[Source: ONVIF](https://github.com/AlexxIT/go2rtc#source-onvif)"
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
/api/roborock:
|
|
get:
|
|
summary: Roborock vacuums discovery
|
|
description: "[Source: Roborock](https://github.com/AlexxIT/go2rtc#source-roborock)"
|
|
tags: [ Discovery ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
|
|
|
|
/onvif/:
|
|
get:
|
|
summary: ONVIF server implementation
|
|
description: Simple realisation of the ONVIF protocol. Accepts any suburl requests
|
|
tags: [ ONVIF ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
|
|
|
|
/stream/:
|
|
get:
|
|
summary: RTSPtoWebRTC server implementation
|
|
description: Simple API for support [RTSPtoWebRTC](https://www.home-assistant.io/integrations/rtsp_to_webrtc/) integration
|
|
tags: [ RTSPtoWebRTC ]
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
|
|
|
|
/api/webtorrent?src={src}:
|
|
get:
|
|
summary: Get WebTorrent share info
|
|
tags: [ WebTorrent ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
responses:
|
|
200: { $ref: "#/components/responses/webtorrent" }
|
|
post:
|
|
summary: Add WebTorrent share
|
|
tags: [ WebTorrent ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
responses:
|
|
200: { $ref: "#/components/responses/webtorrent" }
|
|
|
|
delete:
|
|
summary: Delete WebTorrent share
|
|
tags: [ WebTorrent ]
|
|
parameters:
|
|
- $ref: "#/components/parameters/stream_src_path"
|
|
responses:
|
|
default:
|
|
description: Default response
|
|
|
|
/api/webtorrent:
|
|
get:
|
|
summary: Get all WebTorrent shares info
|
|
tags: [ WebTorrent ]
|
|
responses:
|
|
200: { $ref: "#/components/responses/discovery" }
|
|
|
|
|
|
|
|
/api/stack:
|
|
get:
|
|
summary: Show list unknown goroutines
|
|
tags: [ Debug ]
|
|
responses:
|
|
200:
|
|
description: ""
|
|
content: { text/plain: { example: "" } }
|