平时偶尔会把动画片下载下来,在 B 站上直播(拒绝做正版受害者)

但是近两年 B 站总是掐我的直播,因为版权问题或者不够和谐的问题… 直播间甚至被封过好几次

我还是挺珍惜自己的 6 级号的,但是也确实想以这种最直接的方式给朋友安利动画

从直播技术的角度看,B 站也好,斗鱼也好,本质都是本地推流,服务器处理流,客户端通过服务器链接接收流并播放

那么也许我可以自己搭建一个直播间

经过一番谷歌和 ChatGPT,最后找到了 livego 这个项目

livego 的优点很明显,就是简单,非常简单,熟悉一下文档之后,一行命令就可以跑起来

关于直播服务器

在印象里,直播一向都是很吃性能的一件事,他要捕捉画面,把画面转换成数据流,实时发送给服务端

但是以上这些都是客户端做的事情,实际上服务端对于性能的压力并不大,我测试过 1 核 2G 的服务器足够运行 livego 了

直播者 (OBS & 推流链接) -> 服务器 (livego) -> 用户 (播放链接 & 播放器)

推流比特率和分辨率

选择视频分辨率和相应的比特率。例如:

  • 720p (HD): 大约 2.5 Mbps
  • 1080p (Full HD): 大约 5 Mbps
  • 4K (Ultra HD): 大约 15-25 Mbps

比特率越高,视频质量越好,但所需带宽也越高。

带宽

带宽涉及到本地推流带宽和服务器带宽

本地推流,本地上行带宽

我家网络很菜,上行带宽是 5Mbps,也就是说,我在使用 obs 推流的时候,码率不能超过 5Mbps,否则直播会出现断断续续的情况。保险起见,我在 obs 设置的码率是 4000Kbps,勉强可以让 1920*1080 分辨率不那么失真

直播服务器带宽

服务器需要接收到推流,并且把流分发给客户端。

所以,用户数量越大,所需要的带宽就越大,简要的计算方式如下

总带宽需求 = 单用户带宽需求 × 同时观看人数

以我个人的直播来讲,如果有 10 个人看,也就是需要 50Mbps 的带宽

服务器选择

总结下来,我的需求是:

直播观看用户不多,但是也需要不小的带宽

直播次数不多,所以直播流量不大,可能一个月只有几个 G

CPU 和内存要求不高

那么哪里有这样的服务器呢…. 高带宽,低流量,低性能,这种配置也太奇怪了

首先排除轻量应用服务器,限定死带宽的服务器一定不行。

经过一番努力,我终于找到了合适的,很便宜,并且满足需求的!

阿里云 99 块钱一年的服务器

虽然这个的固定带宽是 3M,但是可以通过升降配置把它改成按流量计费的

改成按流量计费之后,甚至还退了 49 块钱!

也就是,50 块钱拿下了一个 2 核 2G 大带宽的服务器

大概费用:每有一个人看,每小时大概 1 块钱流量费。我感觉很能接受

部署 livego 和使用

使用 docker 部署

首先安装 docker,使用官方脚本安装即可

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装好之后,从 docker 启动,并且给容器添加一个 name,方便容器挂掉之后重启

1
docker run --name livego-server -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego

在安全组放行端口,上面端口的用处,可以看这张图片的备注列

使用 livego

创建房间,像文档里一样,访问地址:

http://ip 地址:8090/control/get?room=movie

页面会出现一个 json,里面包含了一个 key

推流

使用 rmtp 协议进行推流

obs 相关设置

播放

播放支持多种协议,也就是对应上面的端口

安卓可以使用KMSPlayer播放

windows 可以使用potplayer

macos 可以使用IINA

也可以自己使用 flv.js 构建一个网页播放器