长话短说,最近我开始直播我的游戏实况,我并不指望有多少人看,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。新建目录:
1
mkdir nginx-rtmp && cd nginx-rtmp创建docker-compose.yml:
1
2
3
4
5
6
7
8
9
services:
nginx-rtmp:
image: tiangolo/nginx-rtmp:latest
container_name: nginx_rtmp
ports:
- "1935:1935" # RTMP port
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
restart: unless-stopped创建nginx.conf:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
worker_processes auto;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
push rtmp://live.twitch.tv/app/{Twitch 主直播密钥};
}
}
}启动编排:
1
2
docker compose up -d
# 老版本 compose 插件则是 docker-compose up 当然,别忘了开放防火墙端口。我的防火墙参考了 To Fix The Docker and UFW Security Flaw Without Disabling Iptables 一文中提到的配置,相应地,开放端口的命令如下:
1
ufw route allow proto tcp from any to any port 1935配置完成后,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