目 录CONTENT

文章目录

【好玩儿的Docker项目】录播党狂喜,十分钟搭建一个录播神器——bililive-go

咕咕
2024-07-02 / 2 评论 / 5 点赞 / 964 阅读 / 15468 字
温馨提示:
本文最后更新于 2024-07-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

1. 介绍

Bililive-go是一个支持多种直播平台的直播录制工具。

支持的网站如下:

站点 url 支持情况 cookie
Acfun直播 live.acfun.cn 滋瓷
哔哩哔哩直播 live.bilibili.com 滋瓷 滋瓷
战旗直播 www.zhanqi.tv 滋瓷
斗鱼直播 www.douyu.com 滋瓷
火猫直播 www.huomao.com 滋瓷
龙珠直播 longzhu.com 滋瓷
虎牙直播 www.huya.com 滋瓷
CC直播 cc.163.com 滋瓷
一直播 www.yizhibo.com 滋瓷
twitch www.twitch.tv TODO
OPENREC www.openrec.tv 滋瓷
企鹅电竞 egame.qq.com 滋瓷
浪live play.lang.live & www.lang.live 滋瓷
花椒 www.huajiao.com 滋瓷
抖音直播 live.douyin.com 滋瓷 滋瓷
猫耳 fm.missevan.com 滋瓷
克拉克拉 www.hongdoufm.com 滋瓷
快手 live.kuaishou.com 滋瓷(不稳定) 滋瓷
YY直播 www.yy.com 滋瓷
微博直播 weibo.com 滋瓷

简单粗暴,直接添加网址就能开始录播。

9407ca8f6378700346957649cab47b50.png

ac47ce3699ac96b02aa610656e459737.png

还能搭配Grafana查看主播的直播时间,

4890906c0d79ada5b6408f6a7140219b.png 09d9af2ad2763ede67d401c1659adece.png

实在是录播党的福音。

主要特色

  • 支持Docker部署,兼容arm/v6(服务器、软路由、群晖,都可以搭!),升级更新十分方便
  • 支持众多国内平台
  • 上手非常简单

2. 相关地址

官方GitHub地址:https://github.com/hr3lxphr6j/bililive-go (目前3.4k个star,欢迎大家去给作者点星星!)

3. 搭建环境

  • 服务器:咕咕这边用的是Hetzner的杜甫,当然你也可以选择莱卡云香港服务器,或者其他高性价比的服务器。内存1G以上即可,硬盘当然是越大越好啦。
  • 系统:Debian 11 (DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
  • 安装好 Docker、Docker-compose(相关脚本
  • 【必需】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程
  • 【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址
  • 【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程

4. 搭建视频(有时间补充!)

4.1 YouTube

视频地址:

4.2 哔哩哔哩

哔哩哔哩:

5. 搭建方式

5.1 安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

5.2 创建安装目录

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/bililive-go

git clone https://github.com/hr3lxphr6j/bililive-go.git

cd bililive-go

我们来简单修改一下作者提供的docker-compose.yml文件

vim docker-compose.yml

咕咕修改之后的(其实就是取消了注释和version: "3.7",不想用grafana的直接用作者的yaml文件即可):

volumes:
    prometheus_data: {}
services:
  bililive-go:
    image: chigusa/bililive-go
    restart: unless-stopped
    container_name: bililive-go
    volumes:
      - ./Videos:/srv/bililive
      - ./config.docker.yml:/etc/bililive-go/config.yml
    ports:
      - 8080:8080  # 左边的8080可以自由修改成服务器上没有被占用的端口,右边的8080不要动。

  prometheus:
    image: quay.io/prometheus/prometheus
    restart: unless-stopped
    container_name: bililive-prom
    volumes:
      - prometheus_data:/prometheus
      - ./contrib/prometheus:/etc/prometheus
    command:
      # retention 建议大于30天
      - '--storage.tsdb.retention.time=30d'
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
    ports:
      - 9090:9090  # 左边的9090可以自由修改成服务器上没有被占用的端口,右边的9090不要动。
  
  grafana:
    image: grafana/grafana-oss
    restart: unless-stopped
    container_name: bililive-graf
    volumes:
      - ./contrib/grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=${ADMIN_USER}
      - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD}
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/etc/grafana/provisioning/dashboards/bilipanel.json
    ports:
      - 3000:3000  # 左边的3000可以自由修改成服务器上没有被占用的端口,右边的3000不要动。

修改完成之后,可以在英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

编辑 .env自定义账户密码,将example.env保存为.env 默认账户密码 admin (不改网页里也会提醒你去改。)

cp example.env .env

vim .env

修改完成之后,在英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

5.3 打开服务器防火墙(非必需)并访问网页

打开防火墙的端口 8080

举例,腾讯云打开方法如下(部分服务商没有自带的面板防火墙,就不用这步操作了):

image-20220630215240864 image-20220630220546335

类似图中的,这边我们填 8080,示例填 bililive-go ,确定即可(如果你在 docker-compose 文件里换了 9009,这边就需要填 9009,以此类推)

56a42aff23098af08c1ae587e19739ae.png

查看端口是否被占用(以 8080 为例),输入:

lsof -i:8080  #查看 8080 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

同理,如果启用grafana,30009090也开启

5.4 启动 bililive-go

cd /root/data/docker_data/bililive-go

docker compose up -d   # 注意,老版本用户用 docker-compose up -d

等待拉取好镜像,出现 done的字样之后,

理论上我们就可以输入 http://ip:8080 访问了。

但是这边我们推荐先搞一下反向代理!

做反向代理前,你需要一个域名!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo上 6位数字的xyz续费永远都是0.99美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些 古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

6. 反向代理

6.1 利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上域名购买、域名解析 视频教程

image-20221016140213282

之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:

9c8c78516f5e2022e39806c56983c8bd.png 638fecbf5522e0a5a7cf85f14f65c06d.png c3696b5fd82b37a14d75b1c5c59f9669.png de1c674e5c0a52f2ff55040c91500817.png

注意填写对应的 域名IP端口,按文章来的话,应该是 8080

IP 填写:

如果 Nginx Proxy Manager 和 bililive-go 在同一台服务器上,可以在终端输入:

ip addr show docker0

查看对应的 Docker 容器内部 IP。

否则直接填 bililive-go 所在的服务器 IP 就行。

6.2 利用宝塔面板

发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。

image-20220819150345725 image-20220819150542867

代码如下:

location / {
      proxy_pass http://127.0.0.1:8080/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。

image-20220819150730128

也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

7. 使用教程

其实非常简单,举个例子,比如笑笑西卡的直播间地址是https://live.bilibili.com/7777

直接添加房间,输入进去就行。

cae5d47e1ec261b5c833bb2d9b3ff44a.png

同理,虎牙英雄联盟直播间:https://www.huya.com/lpl

之后点击开启监控就好。

9baed1f1e97d1c2c5d10067211158d88.png

308593ba2188d73e2e36be50b1611026.png

录制好的内容在文件里面,
a4c6b9c18047e1f4da97af5fe833593e.png

点击可以直接观看。

ef2e47589d2f36f1545d770052c05007.png

41659cb261c21bb74f4b0cf4380e544f.png

注意很多主播一天到晚播的,你如果一直录的话,需要服务器硬盘大一些,否则记得及时关闭监控!

7.1 更新 bililive-go

cd /root/data/docker_data/bililive-go

docker compose pull

docker compose up -d    # 请不要使用 docker compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入 y

利用 Docker 搭建的应用,更新非常容易~

7.2 卸载 bililive-go

同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/bililive-go

docker compose down

cd ..

rm -rf /root/data/docker_data/bililive-go  # 完全删除

可以卸载得很干净。

8. 常见问题及注意点

如果可以录制YouTube直播就好啦。

8.1 录制的视频频繁分段

可能是网络波动导致的。

8.2 录制的直播视频中途绿屏花屏

这通常是因为主播开始 pk 之后直播间的分辨率发生了微小的变化,而默认的 ffmpeg 程序无法处理这种分辨率变化导致的花屏。

在配置文件中启用 use_native_flv_parser 可以改为使用自制的 flv parser 录制视频。好处是遇到 pk 之类直播间分辨率变化的情况可以自动给视频分段来避免花瓶。坏处好像是遇到网络波动时视频更容易频繁分段?

8.3 快手录制不稳定

确实不稳定。快手网站对录播程序很严格...

8.4 程序崩溃啦

目前已知的崩溃方式有两种。

第一种会在直播间录制结束的瞬间崩溃,崩溃log参考 这里

第二种在录制开始的瞬间崩溃,崩溃 log 参考 这里
这种崩溃似乎是因为程序虽然找到了 ffmpeg 程序,但是在启动 ffmpeg 程序的时候发生了错误。有可能是你下载的 ffmpeg 程序不是你的电脑架构的可执行程序。你可以在命令行启动一下程序使用的 ffmpeg 看看有没有什么错误提醒。

更多问题,请至作者的GitHub上查看:https://github.com/hr3lxphr6j/bililive-go/issues

9. 结尾

祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

10. 参考资料

官方GitHub:https://github.com/hr3lxphr6j/bililive-go

5
广告 广告

评论区