22.04.25

1,说明

先说结果,延迟小于200ms,非常好。

测试服务器配置:腾讯轻量云服务2C4G 8M

github:https://github.com/gwuhaolin/livego

可以用docker运行。也可以源码编译。

2,服务器操作

下文在服务器centos/ubuntu使用源码编译运行:

#1,先安装go语言
sudo yum install go git      #centos

sudo apt instll golang git   #ubnutu

#2,下载源码
git clone https://github.com/gwuhaolin/livego.git

#3,编译
cd livego
go build    #二选一
make build  #二选一

4,运行
./livego

5,输出如下内容
INFO[2022-04-25T14:48:37+08:00]
     _     _            ____
    | |   (_)_   _____ / ___| ___
    | |   | \ \ / / _ \ |  _ / _ \
    | |___| |\ V /  __/ |_| | (_) |
    |_____|_| \_/ \___|\____|\___/
        version: 0.0.15

INFO[2022-04-25T14:48:37+08:00] HLS server enable....
INFO[2022-04-25T14:48:37+08:00] RTMP Listen On :1935
INFO[2022-04-25T14:48:37+08:00] HTTP-API listen On :8090
INFO[2022-04-25T14:48:37+08:00] HLS listen On :7002
INFO[2022-04-25T14:48:37+08:00] HTTP-FLV listen On :7001


3,推流操作

首先查询串流码

http://服务器ip:8090/control/get?room=abcde     #浏览器输入,查询串流码,data的内容

返回如下(码是假的,我编的):

{"status":200,"data":"rfBd78ti2SMtUuSgD5xAV0YU77zampta7Z7S575KLkIZ9PAm"}

终端推流操作

#1,查询本地摄像头
ffmpeg -list_devices true -f dshow -i dummy

#2,返回信息如下
DirectShow video devices (some may be both video and audio devices)
[dshow @ 000002bd2faaf0c0]  "Integrated Camera"
[dshow @ 000002bd2faaf0c0]     Alternative name "@device_pnp_\\?\usb#vid_04f2&pid_b6xxxxxxxxxxxxxx我瞎编的"

#3,得到设备名
"Integrated Camera"

#推流
ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -vf scale=iw/2:-1 -f flv rtmp://服务器ip:1935/live/rfBd78ti2SMtUuSgD5xAV0YU77zampta7Z7S575KLkIZ9PAm

4,拉流

ffplay -fflags nobuffer -flags low_delay -i rtmp://49.234.16.22:1935/live/abcde

5,总结

试验了SRS和livego,发现还是livego的延迟低,小于200ms,实测不知道多少。

经过验证,如果用obs推流,速度会慢30ms

还需要学习ffmpeg和ffplay命令设置,找到最好的状态。

还需要研究服务器如何自动运行./livego命令,而不是人工手动命令行输入。