Update docs

This commit is contained in:
Alex X
2026-02-07 09:12:31 +03:00
parent f3ad4ad977
commit be4b6c3271
6 changed files with 123 additions and 63 deletions
+20 -5
View File
@@ -33,6 +33,7 @@ Ultimate camera streaming application with support for dozens formats and protoc
- [streaming audio](#stream-to-camera) to all cameras with [two-way audio](#two-way-audio) support - [streaming audio](#stream-to-camera) to all cameras with [two-way audio](#two-way-audio) support
- mixing tracks from different sources to single stream - mixing tracks from different sources to single stream
- [auto-match](www/README.md#javascript-api) client-supported streaming formats and codecs - [auto-match](www/README.md#javascript-api) client-supported streaming formats and codecs
- [streaming stats](#streaming-stats) for all active connections
- can be [integrated to any project](#projects-using-go2rtc) or be used as [standalone app](#go2rtc-binary) - can be [integrated to any project](#projects-using-go2rtc) or be used as [standalone app](#go2rtc-binary)
#### Inspired by #### Inspired by
@@ -64,6 +65,7 @@ Ultimate camera streaming application with support for dozens formats and protoc
- [Stream to camera](#stream-to-camera) - [Stream to camera](#stream-to-camera)
- [Publish stream](#publish-stream) - [Publish stream](#publish-stream)
- [Preload stream](#preload-stream) - [Preload stream](#preload-stream)
- [Streaming stats](#streaming-stats)
- [Codecs](#codecs) - [Codecs](#codecs)
- [Codecs filters](#codecs-filters) - [Codecs filters](#codecs-filters)
- [Codecs madness](#codecs-madness) - [Codecs madness](#codecs-madness)
@@ -82,9 +84,7 @@ Ultimate camera streaming application with support for dozens formats and protoc
2. Open web interface: `http://localhost:1984/` 2. Open web interface: `http://localhost:1984/`
3. Add [streams](#streaming-input) to [config](#configuration) 3. Add [streams](#streaming-input) to [config](#configuration)
**Developers:** **Developers:** integrate [HTTP API](internal/api/README.md) into your smart home platform.
- integrate [HTTP API](internal/api/README.md) into your smart home platform
### go2rtc: Binary ### go2rtc: Binary
@@ -141,14 +141,16 @@ Latest, but maybe unstable version:
## Configuration ## Configuration
This is the `go2rtc.yaml` file in [YAML-format](https://en.wikipedia.org/wiki/YAML). This is the `go2rtc.yaml` file in [YAML-format](https://en.wikipedia.org/wiki/YAML).
The configuration can be changed in the [web interface](www/README.md) at `http://localhost:1984`. The configuration can be changed in the [WebUI](www/README.md) at `http://localhost:1984`.
The editor provides syntax highlighting and checking. The editor provides syntax highlighting and checking.
![go2rtc webui config](website/images/webui-config.png)
The simplest config looks like this: The simplest config looks like this:
```yaml ```yaml
streams: streams:
hall_camera: rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&subtype=0 hall-camera: rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&subtype=0
``` ```
- by default go2rtc will search `go2rtc.yaml` in the current work directory - by default go2rtc will search `go2rtc.yaml` in the current work directory
@@ -162,6 +164,12 @@ More information can be [found here](internal/app/README.md).
A summary table of all modules and features can be found [here](internal/README.md). A summary table of all modules and features can be found [here](internal/README.md).
**Core modules**
- [`app`](internal/app/README.md) - Reading [configs](internal/app/README.md) and setting up [logs](internal/app/README.md#log).
- [`api`](internal/api/README.md) - Handle [HTTP](internal/api/README.md) and [WebSocket](internal/api/ws/README.md) API.
- [`streams`](internal/streams/README.md) - Handle a list of streams.
### Streaming input ### Streaming input
#### public protocols #### public protocols
@@ -298,6 +306,13 @@ You can preload any stream on go2rtc start. This is useful for cameras that take
[read more](internal/streams/README.md#preload-stream) [read more](internal/streams/README.md#preload-stream)
### Streaming stats
[WebUI](www/README.md) provides detailed information about all active connections, including IP-addresses, formats, protocols, number of packets and bytes transferred.
Via the [HTTP API](internal/api/README.md) in [`json`](https://en.wikipedia.org/wiki/JSON) or [`dot`](https://en.wikipedia.org/wiki/DOT_(graph_description_language)) format on an interactive connection map.
![go2rtc webui net](website/images/webui-net.png)
## Codecs ## Codecs
If you have questions about why video or audio is not displayed, you need to read the following sections. If you have questions about why video or audio is not displayed, you need to read the following sections.
+99 -55
View File
@@ -3,9 +3,9 @@
go2rtc tries to name formats, protocols and codecs the same way they are named in FFmpeg. go2rtc tries to name formats, protocols and codecs the same way they are named in FFmpeg.
Some formats and protocols go2rtc supports exclusively. They have no equivalent in FFmpeg. Some formats and protocols go2rtc supports exclusively. They have no equivalent in FFmpeg.
- The `echo`, `expr`, `hass` and `onvif` modules receive a link to a stream. They don't know the protocol in advance. - The [`echo`], [`expr`], [`hass`] and [`onvif`] modules receive a link to a stream. They don't know the protocol in advance.
- The `exec` and `ffmpeg` modules support many formats. They are identical to the `http` module. - The [`exec`] and [`ffmpeg`] modules support many formats. They are identical to the [`http`] module.
- The `api`, `app`, `debug`, `ngrok`, `pinggy`, `srtp`, `streams` are supporting modules. - The [`api`], [`app`], [`debug`], [`ngrok`], [`pinggy`], [`srtp`], [`streams`] are supporting modules.
**Modules** implement communication APIs: authorization, encryption, command set, structure of media packets. **Modules** implement communication APIs: authorization, encryption, command set, structure of media packets.
@@ -13,55 +13,99 @@ Some formats and protocols go2rtc supports exclusively. They have no equivalent
**Protocols** implement transport for data transmission. **Protocols** implement transport for data transmission.
| module | formats | protocols | input | output | ingest | two-way | | module | formats | protocols | input | output | ingest | two-way |
|--------------|-----------------|------------------|-------|--------|--------|---------| |----------------|-----------------|------------------|-------|--------|--------|---------|
| `alsa` | `pcm` | `ioctl` | yes | | | | | [`alsa`] | `pcm` | `ioctl` | yes | | | |
| `bubble` | - | `http` | yes | | | | | [`bubble`] | - | `http` | yes | | | |
| `doorbird` | `mulaw` | `http` | yes | | | yes | | [`doorbird`] | `mulaw` | `http` | yes | | | yes |
| `dvrip` | - | `tcp` | yes | | | yes | | [`dvrip`] | - | `tcp` | yes | | | yes |
| `echo` | * | * | yes | | | | | [`echo`] | * | * | yes | | | |
| `eseecloud` | `rtp` | `http` | yes | | | | | [`eseecloud`] | `rtp` | `http` | yes | | | |
| `exec` | * | `pipe`, `rtsp` | yes | | | yes | | [`exec`] | * | `pipe`, `rtsp` | yes | | | yes |
| `expr` | * | * | yes | | | | | [`expr`] | * | * | yes | | | |
| `ffmpeg` | * | `pipe`, `rtsp` | yes | | | | | [`ffmpeg`] | * | `pipe`, `rtsp` | yes | | | |
| `flussonic` | `mp4` | `ws` | yes | | | | | [`flussonic`] | `mp4` | `ws` | yes | | | |
| `gopro` | `mpegts` | `udp` | yes | | | | | [`gopro`] | `mpegts` | `udp` | yes | | | |
| `hass` | * | * | yes | | | | | [`hass`] | * | * | yes | | | |
| `hls` | `mpegts`, `mp4` | `http` | | yes | | | | [`hls`] | `mpegts`, `mp4` | `http` | | yes | | |
| `homekit` | `rtp` | `hap` | yes | yes | | no | | [`homekit`] | `srtp` | `hap` | yes | yes | | no |
| `http` | `adts` | `http`, `tcp` | yes | | | | | [`http`] | `adts` | `http`, `tcp` | yes | | | |
| `http` | `flv` | `http`, `tcp` | yes | | | | | [`http`] | `flv` | `http`, `tcp` | yes | | | |
| `http` | `h264` | `http`, `tcp` | yes | | | | | [`http`] | `h264` | `http`, `tcp` | yes | | | |
| `http` | `hevc` | `http`, `tcp` | yes | | | | | [`http`] | `hevc` | `http`, `tcp` | yes | | | |
| `http` | `hls` | `http`, `tcp` | yes | | | | | [`http`] | `hls` | `http`, `tcp` | yes | | | |
| `http` | `mjpeg` | `http`, `tcp` | yes | | | | | [`http`] | `mjpeg` | `http`, `tcp` | yes | | | |
| `http` | `mpjpeg` | `http` | yes | | | | | [`http`] | `mpjpeg` | `http` | yes | | | |
| `http` | `mpegts` | `http`, `tcp` | yes | | | | | [`http`] | `mpegts` | `http`, `tcp` | yes | | | |
| `http` | `wav` | `http`, `tcp` | yes | | | | | [`http`] | `wav` | `http`, `tcp` | yes | | | |
| `http` | `yuv4mpegpipe` | `http`, `tcp` | yes | | | | | [`http`] | `yuv4mpegpipe` | `http`, `tcp` | yes | | | |
| `isapi` | `alaw`, `mulaw` | `http` | | | | yes | | [`isapi`] | `alaw`, `mulaw` | `http` | | | | yes |
| `ivideon` | `mp4` | `ws` | yes | | | | | [`ivideon`] | `mp4` | `ws` | yes | | | |
| `mjpeg` | `ascii` | `http` | | yes | | | | [`mjpeg`] | `ascii` | `http` | | yes | | |
| `mjpeg` | `jpeg` | `http` | | yes | | | | [`mjpeg`] | `jpeg` | `http` | | yes | | |
| `mjpeg` | `mpjpeg` | `http` | | yes | yes | | | [`mjpeg`] | `mpjpeg` | `http` | | yes | yes | |
| `mjpeg` | `yuv4mpegpipe` | `http` | | yes | | | | [`mjpeg`] | `yuv4mpegpipe` | `http` | | yes | | |
| `mp4` | `mp4` | `http`, `ws` | | yes | | | | [`mp4`] | `mp4` | `http`, `ws` | | yes | | |
| `mpegts` | `adts` | `http` | | yes | | | | [`mpegts`] | `adts` | `http` | | yes | | |
| `mpegts` | `mpegts` | `http` | | yes | yes | | | [`mpegts`] | `mpegts` | `http` | | yes | yes | |
| `multitrans` | `rtp` | `tcp` | | | | yes | | [`multitrans`] | `rtp` | `tcp` | | | | yes |
| `nest` | `srtp` | `rtsp`, `webrtc` | yes | | | no | | [`nest`] | `srtp` | `rtsp`, `webrtc` | yes | | | no |
| `onvif` | `rtp` | * | yes | yes | | | | [`onvif`] | `rtp` | * | yes | yes | | |
| `ring` | `srtp` | `webrtc` | yes | | | yes | | [`ring`] | `srtp` | `webrtc` | yes | | | yes |
| `roborock` | `srtp` | `webrtc` | yes | | | yes | | [`roborock`] | `srtp` | `webrtc` | yes | | | yes |
| `rtmp` | `rtmp` | `rtmp` | yes | yes | yes | | | [`rtmp`] | `flv` | `rtmp` | yes | yes | yes | |
| `rtmp` | `flv` | `http` | | yes | yes | | | [`rtmp`] | `flv` | `http` | | yes | yes | |
| `rtsp` | `rtsp` | `rtsp` | yes | yes | yes | yes | | [`rtsp`] | `rtsp` | `rtsp` | yes | yes | yes | yes |
| `tapo` | `mpegts` | `http` | yes | | | yes | | [`tapo`] | `mpegts` | `http` | yes | | | yes |
| `tuya` | `srtp` | `webrtc` | yes | | | yes | | [`tuya`] | `srtp` | `webrtc` | yes | | | yes |
| `v4l2` | `rawvideo` | `ioctl` | yes | | | | | [`v4l2`] | `rawvideo` | `ioctl` | yes | | | |
| `webrtc` | `srtp` | `webrtc` | yes | yes | yes | yes | | [`webrtc`] | `srtp` | `webrtc` | yes | yes | yes | yes |
| `webtorrent` | `srtp` | `webrtc` | yes | yes | | | | [`webtorrent`] | `srtp` | `webrtc` | yes | yes | | |
| `wyoming` | `pcm` | `tcp` | | yes | | | | [`wyoming`] | `pcm` | `tcp` | | yes | | |
| `wyze` | - | `tutk` | yes | | | yes | | [`wyze`] | - | `tutk` | yes | | | yes |
| `xiaomi` | - | `cs2`, `tutk` | yes | | | yes | | [`xiaomi`] | - | `cs2`, `tutk` | yes | | | yes |
| `yandex` | `srtp` | `webrtc` | yes | | | | | [`yandex`] | `srtp` | `webrtc` | yes | | | |
[`alsa`]: alsa/README.md
[`api`]: api/README.md
[`app`]: app/README.md
[`bubble`]: bubble/README.md
[`debug`]: debug/README.md
[`doorbird`]: doorbird/README.md
[`dvrip`]: dvrip/README.md
[`echo`]: echo/README.md
[`eseecloud`]: eseecloud/README.md
[`exec`]: exec/README.md
[`expr`]: expr/README.md
[`ffmpeg`]: ffmpeg/README.md
[`flussonic`]: flussonic/README.md
[`gopro`]: gopro/README.md
[`hass`]: hass/README.md
[`hls`]: hls/README.md
[`homekit`]: homekit/README.md
[`http`]: http/README.md
[`isapi`]: isapi/README.md
[`ivideon`]: ivideon/README.md
[`mjpeg`]: mjpeg/README.md
[`mp4`]: mp4/README.md
[`mpegts`]: mpegts/README.md
[`multitrans`]: multitrans/README.md
[`nest`]: nest/README.md
[`ngrok`]: ngrok/README.md
[`onvif`]: onvif/README.md
[`pinggy`]: pinggy/README.md
[`ring`]: ring/README.md
[`roborock`]: roborock/README.md
[`rtmp`]: rtmp/README.md
[`rtsp`]: rtsp/README.md
[`srtp`]: srtp/README.md
[`streams`]: streams/README.md
[`tapo`]: tapo/README.md
[`tuya`]: tuya/README.md
[`v4l2`]: v4l2/README.md
[`webrtc`]: webrtc/README.md
[`webtorrent`]: webtorrent/README.md
[`wyoming`]: wyze/README.md
[`wyze`]: wyze/README.md
[`xiaomi`]: xiaomi/README.md
[`yandex`]: yandex/README.md
+3 -3
View File
@@ -1,6 +1,6 @@
# App # App
The application module is responsible for reading configuration files and running other modules. The application module is responsible for reading configuration files, running other modules and setting up [logs](#log).
The configuration can be edited through the application's WebUI with code highlighting, syntax and specification checking. The configuration can be edited through the application's WebUI with code highlighting, syntax and specification checking.
@@ -60,10 +60,10 @@ api:
listen: ":1984" # default public port for WebUI and HTTP API listen: ":1984" # default public port for WebUI and HTTP API
ffmpeg: ffmpeg:
bin: "ffmpeg" # default binary path for FFmpeg bin: "ffmpeg" # default binary path for FFmpeg
log: log:
level: "info" # default log level level: "info" # default log level
output: "stdout" output: "stdout"
time: "UNIXMS" time: "UNIXMS"
+1
View File
@@ -41,6 +41,7 @@ export default defineConfig({
{text: 'Stream to camera', link: '/#stream-to-camera'}, {text: 'Stream to camera', link: '/#stream-to-camera'},
{text: 'Publish stream', link: '/#publish-stream'}, {text: 'Publish stream', link: '/#publish-stream'},
{text: 'Preload stream', link: '/#preload-stream'}, {text: 'Preload stream', link: '/#preload-stream'},
{text: 'Streaming stats', link: '/#streaming-stats'},
], ],
collapsed: false, collapsed: false,
}, },
Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB