mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2026-04-22 23:57:20 +08:00
98 lines
3.3 KiB
Markdown
98 lines
3.3 KiB
Markdown
# App
|
|
|
|
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.
|
|
|
|
- By default, go2rtc will search for the `go2rtc.yaml` config file in the current working directory
|
|
- go2rtc supports multiple config files:
|
|
- `go2rtc -c config1.yaml -c config2.yaml -c config3.yaml`
|
|
- go2rtc supports inline config in multiple formats from the command line:
|
|
- **YAML**: `go2rtc -c '{log: {format: text}}'`
|
|
- **JSON**: `go2rtc -c '{"log":{"format":"text"}}'`
|
|
- **key=value**: `go2rtc -c log.format=text`
|
|
- Each subsequent config will overwrite the previous one (but only for defined params)
|
|
|
|
```
|
|
go2rtc -config "{log: {format: text}}" -config /config/go2rtc.yaml -config "{rtsp: {listen: ''}}" -config /usr/local/go2rtc/go2rtc.yaml
|
|
```
|
|
|
|
or a simpler version
|
|
|
|
```
|
|
go2rtc -c log.format=text -c /config/go2rtc.yaml -c rtsp.listen='' -c /usr/local/go2rtc/go2rtc.yaml
|
|
```
|
|
|
|
## Environment variables
|
|
|
|
There is support for loading external variables into the config. First, they will be loaded from [credential files](https://systemd.io/CREDENTIALS). If `CREDENTIALS_DIRECTORY` is not set, then the key will be loaded from an environment variable. If no environment variable is set, then the string will be left as-is.
|
|
|
|
```yaml
|
|
streams:
|
|
camera1: rtsp://rtsp:${CAMERA_PASSWORD}@192.168.1.123/av_stream/ch0
|
|
|
|
rtsp:
|
|
username: ${RTSP_USER:admin} # "admin" if "RTSP_USER" not set
|
|
password: ${RTSP_PASS:secret} # "secret" if "RTSP_PASS" not set
|
|
```
|
|
|
|
## JSON Schema
|
|
|
|
Editors like [GoLand](https://www.jetbrains.com/go/) and [VS Code](https://code.visualstudio.com/) support autocomplete and syntax validation.
|
|
|
|
```yaml
|
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/AlexxIT/go2rtc/master/www/schema.json
|
|
```
|
|
|
|
or from a running go2rtc:
|
|
|
|
```yaml
|
|
# yaml-language-server: $schema=http://localhost:1984/schema.json
|
|
```
|
|
|
|
## Defaults
|
|
|
|
- Default values may change in updates
|
|
- FFmpeg module has many presets, they are not listed here because they may also change in updates
|
|
|
|
```yaml
|
|
api:
|
|
listen: ":1984" # default public port for WebUI and HTTP API
|
|
|
|
ffmpeg:
|
|
bin: "ffmpeg" # default binary path for FFmpeg
|
|
|
|
log:
|
|
level: "info" # default log level
|
|
output: "stdout"
|
|
time: "UNIXMS"
|
|
|
|
rtsp:
|
|
listen: ":8554" # default public port for RTSP server
|
|
default_query: "video&audio"
|
|
|
|
srtp:
|
|
listen: ":8443" # default public port for SRTP server (used for HomeKit)
|
|
|
|
webrtc:
|
|
listen: ":8555" # default public port for WebRTC server (TCP and UDP)
|
|
ice_servers:
|
|
- urls: [ "stun:stun.cloudflare.com:3478", "stun:stun.l.google.com:19302" ]
|
|
```
|
|
|
|
## Log
|
|
|
|
You can set different log levels for different modules.
|
|
|
|
```yaml
|
|
log:
|
|
format: "" # empty (default, autodetect color support), color, json, text
|
|
level: "info" # disabled, trace, debug, info (default), warn, error
|
|
output: "stdout" # empty (only to memory), stderr, stdout (default)
|
|
time: "UNIXMS" # empty (disable timestamp), UNIXMS (default), UNIXMICRO, UNIXNANO
|
|
|
|
api: trace # module name: log level
|
|
```
|
|
|
|
Modules: `api`, `streams`, `rtsp`, `webrtc`, `mp4`, `hls`, `mjpeg`, `hass`, `homekit`, `onvif`, `rtmp`, `webtorrent`, `wyoming`, `echo`, `exec`, `expr`, `ffmpeg`, `wyze`, `xiaomi`.
|