You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
258 lines
6.0 KiB
Markdown
258 lines
6.0 KiB
Markdown
# RTSPtoWeb share you ip camera to world!
|
|
|
|
RTSPtoWeb converts your RTSP streams to formats consumable in a web browser
|
|
like MSE (Media Source Extensions), WebRTC, or HLS. It's fully native Golang
|
|
without the use of FFmpeg or GStreamer!
|
|
|
|
## Table of Contents
|
|
|
|
- [Installation](#installation)
|
|
- [Configuration](#configuration)
|
|
- [Command-line](#command-line)
|
|
- [API documentation](#api-documentation)
|
|
- [Limitations](#Limitations)
|
|
- [Performance](#Performance)
|
|
- [Authors](#Authors)
|
|
- [License](#license)
|
|
|
|
## Installation
|
|
|
|
### Installation from source
|
|
|
|
1. Download source
|
|
```bash
|
|
$ git clone https://github.com/deepch/RTSPtoWeb
|
|
```
|
|
1. CD to Directory
|
|
```bash
|
|
$ cd RTSPtoWeb/
|
|
```
|
|
1. Test Run
|
|
```bash
|
|
$ GO111MODULE=on go run *.go
|
|
```
|
|
1. Open Browser
|
|
```bash
|
|
open web browser http://127.0.0.1:8083 work chrome, safari, firefox
|
|
```
|
|
|
|
## Installation from docker
|
|
|
|
1. Run docker container
|
|
```bash
|
|
$ docker run --name rtsp-to-web --network host ghcr.io/deepch/rtsptoweb:latest
|
|
```
|
|
1. Open Browser
|
|
```bash
|
|
open web browser http://127.0.0.1:8083 in chrome, safari, firefox
|
|
```
|
|
|
|
You may override the <a href="#example-configjson">configuration</a> `/PATH_TO_CONFIG/config.json` and mount as a docker volume:
|
|
|
|
```bash
|
|
$ docker run --name rtsp-to-web \
|
|
-v /PATH_TO_CONFIG/config.json:/config/config.json \
|
|
--network host \
|
|
ghcr.io/deepch/rtsptoweb:latest
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Server settings
|
|
|
|
```text
|
|
debug - enable debug output
|
|
log_level - log level (trace, debug, info, warning, error, fatal, or panic)
|
|
|
|
http_demo - serve static files
|
|
http_debug - debug http api server
|
|
http_login - http auth login
|
|
http_password - http auth password
|
|
http_port - http server port
|
|
http_dir - path to serve static files from
|
|
ice_servers - array of servers to use for STUN/TURN
|
|
ice_username - username to use for STUN/TURN
|
|
ice_credential - credential to use for STUN/TURN
|
|
webrtc_port_min - minimum WebRTC port to use (UDP)
|
|
webrtc_port_max - maximum WebRTC port to use (UDP)
|
|
|
|
https
|
|
https_auto_tls
|
|
https_auto_tls_name
|
|
https_cert
|
|
https_key
|
|
https_port
|
|
|
|
rtsp_port - rtsp server port
|
|
```
|
|
|
|
### Stream settings
|
|
|
|
```text
|
|
name - stream name
|
|
```
|
|
|
|
### Channel settings
|
|
|
|
```text
|
|
name - channel name
|
|
url - channel rtsp url
|
|
on_demand - stream mode static (run any time) or ondemand (run only has viewers)
|
|
debug - enable debug output (RTSP client)
|
|
audio - enable audio
|
|
status - default stream status
|
|
```
|
|
|
|
#### Authorization play video
|
|
|
|
1 - enable config
|
|
|
|
```text
|
|
"token": {
|
|
"enable": true,
|
|
"backend": "http://127.0.0.1/file.php"
|
|
}
|
|
```
|
|
|
|
2 - try
|
|
|
|
```text
|
|
rtsp://127.0.0.1:5541/demo/0?token=you_key
|
|
```
|
|
|
|
file.php need response json
|
|
|
|
```text
|
|
status: "1" or "0"
|
|
```
|
|
|
|
#### RTSP pull modes
|
|
|
|
* **on demand** (on_demand=true) - only pull video from the source when there's a viewer
|
|
* **static** (on_demand=false) - pull video from the source constantly
|
|
|
|
### Example config.json
|
|
|
|
```json
|
|
{
|
|
"server": {
|
|
"debug": true,
|
|
"log_level": "info",
|
|
"http_demo": true,
|
|
"http_debug": false,
|
|
"http_login": "demo",
|
|
"http_password": "demo",
|
|
"http_port": ":8083",
|
|
"ice_servers": ["stun:stun.l.google.com:19302"],
|
|
"rtsp_port": ":5541"
|
|
},
|
|
"streams": {
|
|
"demo1": {
|
|
"name": "test video stream 1",
|
|
"channels": {
|
|
"0": {
|
|
"name": "ch1",
|
|
"url": "rtsp://admin:admin@YOU_CAMERA_IP/uri",
|
|
"on_demand": true,
|
|
"debug": false,
|
|
"audio": true,
|
|
"status": 0
|
|
},
|
|
"1": {
|
|
"name": "ch2",
|
|
"url": "rtsp://admin:admin@YOU_CAMERA_IP/uri",
|
|
"on_demand": true,
|
|
"debug": false,
|
|
"audio": true,
|
|
"status": 0
|
|
}
|
|
}
|
|
},
|
|
"demo2": {
|
|
"name": "test video stream 2",
|
|
"channels": {
|
|
"0": {
|
|
"name": "ch1",
|
|
"url": "rtsp://admin:admin@YOU_CAMERA_IP/uri",
|
|
"on_demand": true,
|
|
"debug": false,
|
|
"status": 0
|
|
},
|
|
"1": {
|
|
"name": "ch2",
|
|
"url": "rtsp://admin:admin@YOU_CAMERA_IP/uri",
|
|
"on_demand": true,
|
|
"debug": false,
|
|
"status": 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"channel_defaults": {
|
|
"on_demand": true
|
|
}
|
|
}
|
|
```
|
|
|
|
## Command-line
|
|
|
|
### Use help to show available args
|
|
|
|
```bash
|
|
./RTSPtoWeb --help
|
|
```
|
|
|
|
#### Response
|
|
|
|
```bash
|
|
Usage of ./RTSPtoWeb:
|
|
-config string
|
|
config patch (/etc/server/config.json or config.json) (default "config.json")
|
|
-debug
|
|
set debug mode (default true)
|
|
```
|
|
|
|
## API documentation
|
|
|
|
See the [API docs](/docs/api.md)
|
|
|
|
## Limitations
|
|
|
|
Video Codecs Supported: H264 all profiles
|
|
|
|
Audio Codecs Supported: no
|
|
|
|
## Performance
|
|
|
|
```bash
|
|
CPU usage ≈0.2%-1% one (thread) core cpu intel core i7 per stream
|
|
```
|
|
|
|
## Authors
|
|
|
|
* **Andrey Semochkin** - *Initial work video* - [deepch](https://github.com/deepch)
|
|
* **Dmitriy Vladykin** - *Initial work web UI* - [vdalex25](https://github.com/vdalex25)
|
|
|
|
See also the list of [contributors](https://github.com/deepch/RTSPtoWeb/contributors) who participated in this project.
|
|
|
|
## License
|
|
|
|
This project licensed. License - see the [LICENSE.md](LICENSE.md) file for details
|
|
|
|
[webrtc](https://github.com/pion/webrtc) follows license MIT [license](https://raw.githubusercontent.com/pion/webrtc/master/LICENSE).
|
|
|
|
[joy4](https://github.com/nareix/joy4) follows license MIT [license](https://raw.githubusercontent.com/nareix/joy4/master/LICENSE).
|
|
|
|
## Other Example
|
|
|
|
Examples of working with video on golang
|
|
|
|
- [RTSPtoWeb](https://github.com/deepch/RTSPtoWeb)
|
|
- [RTSPtoWebRTC](https://github.com/deepch/RTSPtoWebRTC)
|
|
- [RTSPtoWSMP4f](https://github.com/deepch/RTSPtoWSMP4f)
|
|
- [RTSPtoImage](https://github.com/deepch/RTSPtoImage)
|
|
- [RTSPtoHLS](https://github.com/deepch/RTSPtoHLS)
|
|
- [RTSPtoHLSLL](https://github.com/deepch/RTSPtoHLSLL)
|
|
|
|
[](https://www.paypal.me/AndreySemochkin) - You can make one-time donations via PayPal. I'll probably buy a ~~coffee~~ tea. :tea:
|