国庆在家玩直播
准备工作
推流工具:OBS(Open Broadcaster Software),软件下载地址:https://obsproject.com/download
播放工具:
PotPlayer(windows),下载地址:https://daumpotplayer.com/download/
IINA(macOS),下载地址:https://iina.io/download/
VLC(跨平台),下载地址:https://www.videolan.org/vlc/
安装
在 docker 注册表中搜索 livego
,选择第二个 gwuhaolin/livego
,应该就只有一个版本,所以双击直接下载。
端口
本地端口 | 容器端口 | 说明 |
---|---|---|
1935 | 1935 | RTMP协议,用于主播推流 |
7001 | 7001 | HTTP-FLV协议,用于播放 |
7002 | 7002 | HLS协议 ,用于播放 |
8090 | 8090 | HTTP-API |
直播
PotPlayer设置
用 PotPlayer
播放《007:女王密使》作为 OBS
的视频源,因为后面还要用 PotPlayer
来播放,所以一定要修改 多重处理方式
OBS的设置
在 OBS
–> 来源
–> 窗口捕捉
设置捕捉画面
当然也也可以选择摄像头(视频捕获设备)或者本地媒体文件
当然如果你愿意,你也可以叠加显示
用OBS推流
第一步、在浏览器中输入 http://群晖IP:8090/control/get?room=movie
, 获取一个房间的 channelkey
用于推流。
第二步、使用OBS来推流。
按官网的介绍,通过 RTMP
协议推送视频流的地址是: rtmp://server ip:1935/{appname}/{channelkey}
,
其中 appname
默认是 live
,所以在 OBS
的推流设置中的 服务器
地址填 rtmp://群晖IP:1935/live
,串流秘钥
填第一步获取到的 channelkey
用客户端播放
第三步、播放,其中 RTMP
的播放地址如下: rtmp://server ip:1935/{appname}/movie
,所以我们在 PotPlayer
中 打开链接
中输入 rtmp://群晖IP:1935/live/movie
如果没什么意外,你应该能看到直播画面了。左边是 OBS
推流的界面,右边是 PotPlayer
播放的界面。
如果是在 macOS
上播放,可以用 IINA
,我尝试着用远程推流和远程播放,受限于带宽和无 CDN
支持,常常会需要缓冲,不过这一切都在情理之中。
所以如果要投入实用,当然还是要用大厂的云服务才行。
用网页播放
除了播放器外,我们还可以用网页播放,因为 LiveGo
除了 RTMP
外还支持 HTTP-FLV
和 HLS
播放协议。
我把网页播放器打包到了webplayer.zip
中,webplayer.zip
下载地址:
https://laosu.ml/uploads/webplayer.zip
或者
百度分享链接: https://pan.baidu.com/s/1SUTuWfpQTm48gzj0I9zsLQ 提取码: xbj1
webplayer.zip
里有三个文件,源代码来源自『使用flv.js与video.js实现播放视频直播(简教程)』,对作者表示感谢!
其中 flv.htm
引用了 flv.js
库,而 hls.htm
则引用了 video.js
库,这两个库都是开源的,有兴趣的可以自己研究。
FLV协议
用记事本打开 flv.htm
,找到下图中的部分
LiveGo
采用 HTTP-FLV
协议的播放地址为: http://127.0.0.1:7001/{appname}/movie.flv
,所以根据 OSB
推流的地址,这里要修改为 http://群晖IP:7001/live/movie.flv
,保存文件后,双击 flv.htm
文件,用默认浏览器打开,点播放按钮,如果没意外的话,图像就应该出来了
这个地址输入到
PotPlayer
中,也是可以播放的
如果 OBS
没有推流,flv.htm
中会一直转圈
HLS协议
同样的,用记事本打开 hls.htm
,找到下图中的部分
LiveGo
采用 HLS
协议的播放地址为: http://127.0.0.1:7002/{appname}/movie.m3u8
,所以根据 OSB
的推流地址,这里要修改为 http://群晖IP:7002/live/movie.m3u8
,保存文件后,双击 hls.htm
文件,用默认浏览器打开,点播放按钮,如果没意外的话,图像也应该会出来
这个地址输入到
PotPlayer
中,同样也是可以播放的
如果 OBS
还没开始推流,hls.htm
会直接报错
空间占用
直播会在 docker
容器中生成临时文件,占用大量的空间,这个需要定期进行清理,不然很容易爆了,因为我存放 docker
的系统盘比较小
每次推流都会产生一个 flv
文件,文件的大小取决于直播的时间。
写在最后
直播的用途很多,直播讲课,直播带货等等,用在家里的话,可以试试直播监控摄像头。
RTMP协议
对于支持 rtmp
协议的摄像头比较好办,可以像 OBS
一样直接推流到 LiveGo
服务。
mjpeg协议
对于支持 mjpeg
协议的摄像头,需要用 OBS
来推流。在 OBS
的 来源
中新建 浏览器
,在 浏览器
属性中的 URL
中输入摄像机的 mjpeg url
访问地址
RTSP协议
OBS
本身并不支持 RTSP
协议,所以还需要 VLC
或者 PotPlayer
来做中转。
首先在 PotPlayer
中打开 rtsp
地址
然后在 OBS
的 来源
中新建 窗口捕获
当然你熟悉 ffmpeg
的话,也可以用 ffmpeg
将 rtsp
流转为 rtmp
流并推给 LiveGo
服务器,只是我还没试过。
我承认这个过程确实有点折腾,但也挺好玩的不是么?
参考文档
livego/README_cn.md at master · gwuhaolin/livego · GitHub
地址:https://github.com/gwuhaolin/livego/blob/master/README_cn.mdlivego介绍以及最全使用方法介绍 | 码农家园
地址:https://www.codenong.com/cs106683184/使用flv.js做直播 · Issue #3 · gwuhaolin/blog · GitHub
地址:https://github.com/gwuhaolin/blog/issues/3使用flv.js做直播 - 浩麟的博客
地址:https://wuhaolin.cn/2017/05/17/%E4%BD%BF%E7%94%A8flv.js%E5%81%9A%E7%9B%B4%E6%92%AD/使用flv.js与video.js实现播放视频直播(简教程) - 简书
地址:https://www.jianshu.com/p/d9c66d7d1653livego+obs+flv.js 搭建视频直播 - sentangle - 博客园
地址:https://www.cnblogs.com/sentangle/p/12238836.htmlflv + livego + obs 实现简易直播平台(windows版+Linux版)_qq_38556217的博客-CSDN博客
地址:https://blog.csdn.net/qq_38556217/article/details/104622875rtsp视频流转rtmp在网页上直播_banjing_1993的博客-CSDN博客
地址:https://blog.csdn.net/banjing_1993/article/details/105221506