51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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

  1. 介绍 {#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(服务器、软路由、群晖,都可以搭!),升级更新十分方便
  • 支持众多国内平台
  • 上手非常简单
  1. 相关地址 {#2--相关地址}

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

  1. 搭建环境 {#3--搭建环境}

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

4.1 YouTube {#4-1-YouTube}

视频地址:

4.2 哔哩哔哩 {#4-2-哔哩哔哩}

哔哩哔哩:

  1. 搭建方式 {#5--搭建方式}

5.1 安装 Docker 与 Nginx Proxy Manager {#5-1-安装-Docker-与-Nginx-Proxy-Manager}

可以直接参考这篇内容:

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

5.2 创建安装目录 {#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 打开服务器防火墙(非必需)并访问网页 {#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 {#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 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

  1. 反向代理 {#6--反向代理}

6.1 利用 Nginx Proxy Manager {#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 利用宝塔面板 {#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

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

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

  1. 使用教程 {#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 {#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 {#7-2-卸载-bililive-go}

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

cd /root/data/docker_data/bililive-go

docker compose down

cd ..

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


可以卸载得很干净。

  1. 常见问题及注意点 {#8--常见问题及注意点}

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

8.1 录制的视频频繁分段 {#8-1-录制的视频频繁分段}

可能是网络波动导致的。

8.2 录制的直播视频中途绿屏花屏 {#8-2-录制的直播视频中途绿屏花屏}

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

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

8.3 快手录制不稳定 {#8-3-快手录制不稳定}

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

8.4 程序崩溃啦 {#8-4-程序崩溃啦}

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

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

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

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

  1. 结尾 {#9--结尾}

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

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

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

  1. 参考资料 {#10--参考资料}

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

赞(1)
未经允许不得转载:工具盒子 » 【好玩儿的Docker项目】录播党狂喜,十分钟搭建一个录播神器——bililive-go