已找到了更好的方案,见下一篇
有和朋友偶尔屏幕分享的需求,但是发现市面上的一些产品都不尽人意,要不就是画质太低,帧率太低,要不就是有时间限制。所以就突发奇想,为什么不自己搭建一个呢?踩了许多坑之后,终于发现一个简单易上手又好用的方案
前言
这不是一个教程,这篇文章是基于我自己的实践经验写的,只是想记录一下当时的做法。如果你也想要搭建一个自己的直播服务器,我强烈建议阅读官方的入门文档,并根据你的需要调整这些步骤。
使用的项目是SRS,一个国人大佬开发的直播流服务
SRS是一款简单、高效、支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH、GB28181的实时视频服务器。
最终效果展示
首先推流到直播服务器

打开网页来观看直播流

测试延迟

可以看到延迟只有1秒左右
搭建
准备工作
- 一台有公网ip的Linux服务器
- 我搭建的环境为
Ubuntu 22.04
Docker Engine - Community 25.0.2
启动服务
官方推荐使用Docker来启动服务
Docker Compose
更推荐使用docker compose来启动服务,更加容易维护
创建一个文件夹,然后在文件夹下创建
docker-compose.yml
文件把下面内容复制进去后保存退出services: srs: image: ossrs/srs:5 ports: - 1935:1935 - 1985:1985 - 8080:8080
这里推荐一个网站,可以把docker run命令转换成docker compose:
启动服务,要在
docker-compose-yml
所在的目录执行docker compose up -d
测试
查看docker正在运行的容器
docker ps
看看相应的端口是否被成功映射了

8080
: 网页客户端,用来管理和拉流
1935
: 直播要推流的端口
1985
: rtc端口,暂时用不到
没问题的话,可以打开网页客户端http:/服务器地址:8080/ ,注意云服务器要在网页管理面板里把8080和1935端口打开
正常的话会显示这样的界面

直播推流
打开OBS,选择设置→直播
- 服务:选择
自定义…
- 服务器:
rtmp://服务器地址:1935/live
- 推流码:
livestream
- 这个其实可以随便设定,默认的就不用每次打开客户端修改观看的地址了
设定完成之后,就可以开始愉快的直播了

OBS设置
为了降低观看的延迟,需要做一些小小的设置,视频编码器选择
NVIDIA NVENC H.264
,用显卡进行编码效果很好
只要设置了这么几项,就可以把延迟缩小到1秒左右
- 输出模式:
高级
- 关键帧间隔:
1s
- 调节:
超低延迟
- 配置:baseline
如果使用CPU进行编码

客户端观看
前往客户端页面,点击
SRS播放器
,然后点击Play

如果你之前设置了自定义的推流码,只要把URL里的网址改成把最后部分改成你的推流码就行
http://
服务器地址
:8080/live/你的推流码
.flv总结
在服务器上搭建了直播服务器,通过OBS推流到服务器,然后在用网页来观看直播