国庆在家玩直播

准备工作

推流工具:OBS(Open Broadcaster Software),软件下载地址:https://obsproject.com/download

title

播放工具:
PotPlayer(windows),下载地址:https://daumpotplayer.com/download/

IINA(macOS),下载地址:https://iina.io/download/

VLC(跨平台),下载地址:https://www.videolan.org/vlc/

安装

在 docker 注册表中搜索 livego ,选择第二个 gwuhaolin/livego,应该就只有一个版本,所以双击直接下载。

title

端口

本地端口 容器端口 说明
1935 1935 RTMP协议,用于主播推流
7001 7001 HTTP-FLV协议,用于播放
7002 7002 HLS协议 ,用于播放
8090 8090 HTTP-API

title

直播

PotPlayer设置

PotPlayer 播放《007:女王密使》作为 OBS 的视频源,因为后面还要用 PotPlayer 来播放,所以一定要修改 多重处理方式

title

OBS的设置

OBS –> 来源 –> 窗口捕捉 设置捕捉画面

title

当然也也可以选择摄像头(视频捕获设备)或者本地媒体文件

title

当然如果你愿意,你也可以叠加显示

title

用OBS推流

第一步、在浏览器中输入 http://群晖IP:8090/control/get?room=movie, 获取一个房间的 channelkey 用于推流。

title

第二步、使用OBS来推流。

按官网的介绍,通过 RTMP 协议推送视频流的地址是: rtmp://server ip:1935/{appname}/{channelkey}
其中 appname 默认是 live,所以在 OBS 的推流设置中的 服务器 地址填 rtmp://群晖IP:1935/live串流秘钥 填第一步获取到的 channelkey

title

用客户端播放

第三步、播放,其中 RTMP 的播放地址如下: rtmp://server ip:1935/{appname}/movie,所以我们在 PotPlayer打开链接 中输入 rtmp://群晖IP:1935/live/movie

title

如果没什么意外,你应该能看到直播画面了。左边是 OBS 推流的界面,右边是 PotPlayer 播放的界面。

title

如果是在 macOS 上播放,可以用 IINA,我尝试着用远程推流和远程播放,受限于带宽和无 CDN 支持,常常会需要缓冲,不过这一切都在情理之中。

title

所以如果要投入实用,当然还是要用大厂的云服务才行。

用网页播放

除了播放器外,我们还可以用网页播放,因为 LiveGo 除了 RTMP 外还支持 HTTP-FLVHLS 播放协议。

我把网页播放器打包到了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,找到下图中的部分

title

LiveGo 采用 HTTP-FLV 协议的播放地址为: http://127.0.0.1:7001/{appname}/movie.flv,所以根据 OSB 推流的地址,这里要修改为 http://群晖IP:7001/live/movie.flv,保存文件后,双击 flv.htm 文件,用默认浏览器打开,点播放按钮,如果没意外的话,图像就应该出来了

title

这个地址输入到 PotPlayer 中,也是可以播放的

title

如果 OBS 没有推流,flv.htm 中会一直转圈

title

HLS协议

同样的,用记事本打开 hls.htm,找到下图中的部分

title

LiveGo 采用 HLS 协议的播放地址为: http://127.0.0.1:7002/{appname}/movie.m3u8,所以根据 OSB 的推流地址,这里要修改为 http://群晖IP:7002/live/movie.m3u8,保存文件后,双击 hls.htm 文件,用默认浏览器打开,点播放按钮,如果没意外的话,图像也应该会出来

title

这个地址输入到 PotPlayer 中,同样也是可以播放的

title

如果 OBS 还没开始推流,hls.htm 会直接报错

title

空间占用

直播会在 docker 容器中生成临时文件,占用大量的空间,这个需要定期进行清理,不然很容易爆了,因为我存放 docker 的系统盘比较小

title

每次推流都会产生一个 flv 文件,文件的大小取决于直播的时间。

title

写在最后

直播的用途很多,直播讲课,直播带货等等,用在家里的话,可以试试直播监控摄像头。

RTMP协议

对于支持 rtmp 协议的摄像头比较好办,可以像 OBS 一样直接推流到 LiveGo 服务。

mjpeg协议

对于支持 mjpeg 协议的摄像头,需要用 OBS 来推流。在 OBS来源 中新建 浏览器,在 浏览器 属性中的 URL 中输入摄像机的 mjpeg url 访问地址

title

RTSP协议

OBS 本身并不支持 RTSP 协议,所以还需要 VLC 或者 PotPlayer 来做中转。

首先在 PotPlayer 中打开 rtsp 地址

title

然后在 OBS来源 中新建 窗口捕获

title

当然你熟悉 ffmpeg 的话,也可以用 ffmpegrtsp 流转为 rtmp 流并推给 LiveGo 服务器,只是我还没试过。

我承认这个过程确实有点折腾,但也挺好玩的不是么?

参考文档

livego/README_cn.md at master · gwuhaolin/livego · GitHub
地址:https://github.com/gwuhaolin/livego/blob/master/README_cn.md

livego介绍以及最全使用方法介绍 | 码农家园
地址: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/d9c66d7d1653

livego+obs+flv.js 搭建视频直播 - sentangle - 博客园
地址:https://www.cnblogs.com/sentangle/p/12238836.html

flv + livego + obs 实现简易直播平台(windows版+Linux版)_qq_38556217的博客-CSDN博客
地址:https://blog.csdn.net/qq_38556217/article/details/104622875

rtsp视频流转rtmp在网页上直播_banjing_1993的博客-CSDN博客
地址:https://blog.csdn.net/banjing_1993/article/details/105221506