Featured image of post OBS 多路推流折腾记:那些本不必要的麻烦

OBS 多路推流折腾记:那些本不必要的麻烦

干脆还是不直播得了,自己玩。

长话短说,最近我开始直播我的游戏实况,我并不指望有多少人看,Just, Why not? 再者每个直播平台都会有直播回放。相当于免费保存我每一次游戏的录像,何乐而不为?

扯远了,如你所见,近期我有了多平台同时直播的需求,然而 OBS 本身显然不支持同时推流,同时也因为不支持设置代理的特点和众所周知的原因,无法推流到 twitch.tv,于是我开始寻找解决方案。

明确需求

  • 多路平台同时直播
  • 最好对性能影响小
  • 其中一路需要推流需要代理

多路推流

多路推流有现成的插件可用:Github

在 Release 页面下载.exe安装包,安装完成后记得在「停靠窗口」菜单里勾选「多路推流」。这时候默认会弹出一个独立窗口,可以趁这个机会顺便调整一下 OBS 的布局。

启用多路推流面板

插件的设置也没什么好说的,用在原版 OBS 的填法在这个插件里如法炮制即可。

Bilibili 直播姬

莫名其妙,B 站小于 50 粉丝的 Up 主只能使用直播姬开播,其他国内平台做出类似规定者大概也不在少数,启用第三方推流模式之后,直播面板会显示推流的配置。此时的不需要按照直播姬给出的推流地址进行配置,因为直播姬莫名其妙的给了一个每次都会变的内网 IP,直接以127.0.0.1或者localhost替换即可。

Bilibili 直播姬的第三方推流模式 插件的设置

推流到 Twitch

推流到 Twitch 则会因为 GFW 多出很多不必要的麻烦。

OBS 本身并不支持设置代理,起初我打算用 Clash 的 TAP 模式强制代理 OBS 的流量,而 Clash 的 TAP 并不监听 rtmp 流量,宣告失败。我决定直接架设一个转发服务器,这个服务器需要既可以与 Twitch 通信,又可以不受 GFW 的干扰。

在网上查到一些信息,Caddy 似乎不支持 RTMP 协议,而 nginx-rtmp 插件则专门为 RTMP 协议设计。这几乎是唯一的选择。

部署的前提:

  • 熟悉基本的 Linux 命令行操作。
  • 服务器已经安装好dockerdocker 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

Licensed under CC BY-NC-SA 4.0