昨天某人问我如何把 Linux 的桌面分享到腾讯会议,我提了个馊主意:
- Linux 上用 obs 推流到 rtmp 服务器
- Windows 用 PotPlayer 拉流,全屏播放
- 腾讯会议共享这个屏幕
然后昨晚用阿里云的服务实践了一下,是可行的:
但是阿里云的服务不太适合刚刚提到的应用场景。首先,内网的两台机器之间推流拉流,没必要占用宝贵的公网带宽;另一方面,阿里云的流媒体流量费非常贵。
本文记录了在内网的树莓派上搭建 rtmp 服务器、obs 推流、PotPlayer 拉流或浏览器直接播放的过程。
nginx 搭建 rtmp 服务器
nginx 有一个模块 nginx-rtmp-module
,可以用来搭建比较完善的 rtmp 服务器。我树莓派的系统是基于 debian 的,可以直接用 apt 安装。如下:
debian 下默认的 nginx 的模块管理方式,是在 nginx.conf
里面指定包含 modules-enabled
目录内的全体 .conf
文件;以后安装模块,只需要在 modules-enabled
文件夹内放置对应的配置。apt 会帮我们做好这些事。
接下来的步骤照抄网上的博客,在 nginx.conf
里面添加这几句话:
在网站配置文件里面放这几句话:
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
autoindex on;
alias /var/www/html/hls;
expires -1;
add_header Cache-Control no-cache;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
nginx -t
测试通过, nginx -s reload
平滑重启服务器。
扫描一下端口,可以发现 rtmp 端口 1935
已经开放了。
OBS 推流
在 OBS 中设置推流服务器,往 rtmp://192.168.3.23/hls
推流:
这里用了招新宣讲会时候的场景。画面是一张图片,音乐是拉取桌面音频。
访问 http://192.168.3.23/hls/test/
,可以看见 index.m3u8
以及一些切片文件。
至此完成 nginx 的配置。
PotPlayer 拉流
很多播放器都支持拉取直播流,我自己比较喜欢用 PotPlayer. 右键 打开 -> 打开链接
,输入我们的 index.m3u8
地址:
于是就可以拉到视频流了!
html5 直接观看直播
我们这里用了个外部库 hls.js,在浏览器中播放 m3u8 格式的视频:
开始推流,刷新网页,过几秒钟就可以在浏览器中看到直播画面了: