webrtc-streamer

使用开源组件webrtc-streamer快速推送RTSP流视频

参考链接:

https://github.com/mpromonet/webrtc-streamer

https://www.bilibili.com/read/cv14070290/

1. 下载release包至服务器中:(将包放置于/iot目录下)

地址: https://github.com/mpromonet/webrtc-streamer/releases (webrtc-streamer-v0.7.0-Linux-x86_64-Release.tar.gz)

2. 更改名称并解压包

1
2
3
4
tar -zxvf webrtc-streamer-v0.7.0-Linux-x86_64-Release.tar.gz

mv webrtc-streamer-v0.7.0-Linux-x86_64-Release webrtc-streamer

3. 测试包是否正常使用

在/iot/webrtc-streamer/ 执行 (IP端口需要手动指定,ip为当前服务器ip,port默认写29000,如果被占用则选其他)

/iot/webrtc-streamer/webrtc-streamer -H ip:port

并查看run.log查看日志

如果出现如下字样则表示成功:

3. 自定义系统服务

  1. 进入目录 cd /etc/systemd/system/
  2. 编写属于自己的unit文件,命令为webrtc-streamer.service,整个文件如下: (第9行需要改为部署机器的IP和指定的未占用端口)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[Unit]

Description=WebRTC Streamer Service

[Service]

Type=simple

ExecStart=nohup /iot/webrtc-streamer/webrtc-streamer -H 192.168.35.195:29000 > /dev/null 2>&1 &

Restart=always

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

  1. 将上述的文件拷贝到 /usr/lib/systemd/system/*目录下
  2. 将my-demo.service注册到系统当中执行命令:systemctl enable webrtc-streamer.service
  3. 至此服务已经创建完成。重新启动系统,检查服务是否正常启动,服务在开机时启动成功则功能完成。

附录:

启动:systemctl start wreamer.service

结束:systemctl stop webrtc-streamer.service

重启:systemctl restart webrtc-streamer.service

状态:systemctl status webrtc-streamer.service

列出所有可用单元:systemctl list-unit-files

列出所有运行中单元:systemctl list-units

列出所有失败单元:systemctl –failed

使用systemctl命令杀死服务:systemctl kill webrtc-streamer.service

服务启动失败时:

  1. 直接使用nohup /iot/webrtc-streamer/webrtc-streamer -H ip:port > run.log 2>&1 & 命令直接执行,并查看run.log查看日志
  2. version `GLIBC_2.27‘ not found

参考链接: http://dljz.nicethemes.cn/news/show-299309.html

服务启动规则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
./webrtc-streamer [-H http port] [-S[embeded stun address]] -[v[v]]  [urls...]
./webrtc-streamer [-H http port] [-s[external stun address]] -[v[v]] [urls...]
./webrtc-streamer -V
-v[v[v]] : verbosity
-V : print version
-C config.json : load urls from JSON config file
-n name -u videourl -U audiourl : register a name for a video url and an audio url
[url] : url to register in the source list

-H [hostname:]port : HTTP server binding (default 0.0.0.0:8000)
-w webroot : path to get files
-c sslkeycert : path to private key and certificate for HTTPS
-N nbthreads : number of threads for HTTP server
-A passwd : password file for HTTP server access
-D authDomain : authentication domain for HTTP server access (default:mydomain.com)

-S[stun_address] : start embeded STUN server bind to address (default 0.0.0.0:3478)
-s[stun_address] : use an external STUN server (default:stun.l.google.com:19302 , -:means no STUN)
-T[username:password@]turn_address : start embeded TURN server (default:disabled)
-t[username:password@]turn_address : use an external TURN relay server (default:disabled)
-R [Udp port range min:max] : Set the webrtc udp port range (default 0:65535)
-W webrtc_trials_fields : Set the webrtc trials fields (default:WebRTC-FrameDropper/Disabled/)
-a[audio layer] : spefify audio capture layer to use (default:0)
-q[filter] : spefify publish filter (default:.*)
-o : use null codec (keep frame encoded)

docker

  1. 启动
1
2
# -o 关闭编解码,优化CPU占用(支持源为H.264),端口自定义
docker run -d --rm --name webrtc-stream --network=host mpromonet/webrtc-streamer -o -H 0.0.0.0:18888
  1. 关闭
1
docker stop  webrtc-steram
  1. 查看日志
1
docker logs -f webrtc-stream