长话短说,最近我开始直播我的游戏实况,我并不指望有多少人看,Just, Why not? 再者每个直播平台都会有直播回放。相当于免费保存我每一次游戏的录像,何乐而不为?
扯远了,如你所见,近期我有了多平台同时直播的需求,然而 OBS 本身显然不支持同时推流,同时也因为不支持设置代理的特点和众所周知的原因,无法推流到 twitch.tv,于是我开始寻找解决方案。
明确需求
- 多路平台同时直播
- 最好对性能影响小
- 其中一路需要推流需要代理
多路推流
多路推流有现成的插件可用:Github
在 Release 页面下载.exe
安装包,安装完成后记得在「停靠窗口」菜单里勾选「多路推流」。这时候默认会弹出一个独立窗口,可以趁这个机会顺便调整一下 OBS 的布局。
插件的设置也没什么好说的,用在原版 OBS 的填法在这个插件里如法炮制即可。
Bilibili 直播姬
莫名其妙,B 站小于 50 粉丝的 Up 主只能使用直播姬开播,其他国内平台做出类似规定者大概也不在少数,启用第三方推流模式之后,直播面板会显示推流的配置。此时的不需要按照直播姬给出的推流地址进行配置,因为直播姬莫名其妙的给了一个每次都会变的内网 IP,直接以127.0.0.1
或者localhost
替换即可。
推流到 Twitch
推流到 Twitch 则会因为 GFW 多出很多不必要的麻烦。
OBS 本身并不支持设置代理,起初我打算用 Clash 的 TAP 模式强制代理 OBS 的流量,而 Clash 的 TAP 并不监听 rtmp 流量,宣告失败。我决定直接架设一个转发服务器,这个服务器需要既可以与 Twitch 通信,又可以不受 GFW 的干扰。
在网上查到一些信息,Caddy 似乎不支持 RTMP 协议,而 nginx-rtmp
插件则专门为 RTMP 协议设计。这几乎是唯一的选择。
部署的前提:
- 熟悉基本的 Linux 命令行操作。
- 服务器已经安装好
docker
和docker compose
插件。 - 有合适的命令行文本编辑器,比如
nvim
或者绝大部分 distro 自带的nano
。
新建目录:
|
|
创建docker-compose.yml
:
|
|
创建nginx.conf
:
|
|
启动编排:
|
|
当然,别忘了开放防火墙端口。我的防火墙参考了 To Fix The Docker and UFW Security Flaw Without Disabling Iptables 一文中提到的配置,相应地,开放端口的命令如下:
|
|
配置完成后,OBS 内的推流目标地址填入rtmp://服务器ip/live
,推流码填写任意值均可。设置完成后即可开始推流。
Netch
如果没有服务器,亦可以使用 Netch 代理 OBS 进程进行推流。
首先下载 Netch 1.9.2 版本,注意一定要是 1.9.2 版本。添加一个进程模式,将 OBS 文件夹加入,随后启用该进程模式的代理即可。
尾声
这次为了在同时在 Twitch 和 B 站上推流,遇到了很多原本不必要的麻烦。我可以怪 OBS 没有内置代理功能,也可以怪 Clash Verge 等代理工具不支持 RTMP,转来转去,最终要怪的,还得是 GFW。虽然最后的结果还算令人满意,仅仅为了推流而折腾这些东西的体验实在是称不上良好。也许我今后我应该去研究修改 Mihomo 内核,让其支持 RTMP 协议,亦或是自己写一套独立的实现单独转发 OBS 的流量,不论如何,在这片土地上,想要畅快的直播,道阻且长。
最后,欢迎关注我的 Twitch 频道: https://www.twitch.tv/powerfullz233