Skip to content

ZhangMingZhao1/StreamerHelper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

19d1d14 · May 1, 2024
Apr 30, 2021
Apr 27, 2024
Apr 24, 2024
Apr 20, 2021
Jan 22, 2022
Feb 12, 2022
Jan 24, 2022
Feb 12, 2022
Jul 16, 2020
Apr 25, 2024
May 1, 2024
Apr 6, 2021

Repository files navigation

StreamerHelper

StreamerHelper

🍰 Never miss your Streamer again

MIT npm version nodejs version

Introduction

StreamerHelper 是一个主播录制工具,可以实时录制各平台直播保存为视频文件,并向B站自动投稿已缓存的文件。目前支持的平台有虎牙、斗鱼、B站、非洲台等。

(关于版权问题,投稿的参数默认一律设置的转载,简介处默认放有直播间链接)

部署

容器部署

首先安装 Docker。

# 本文以 /home/StreamerHelper/ 文件夹为例,作为应用的根目录。

# 拉取 Docker 镜像
docker pull umuoy1/streamerhelper
# 创建挂载目录
mkdir /home/StreamerHelper && cd /home/StreamerHelper && mkdir download/
# 下载配置文件保存到本地
curl https://raw.githubusercontent.com/umuoy1/StreamerHelper/master/templates/info-example.json >> info.json

通过以下指令运行容器。

docker run --name sh -itd \
-v /home/StreamerHelper/info.json:/app/templates/info.json \
-v /home/StreamerHelper/download:/app/download \
--dns 114.114.114.114 \
--restart always umuoy1/streamerhelper

如果没有配置access_token,则需要扫码登录。
具体操作方法如下,在控制台查看容器日志打印出二维码,然后通过B站移动客户端扫码登录。

# 打印日志中的二维码
docker logs sh

登陆成功后,录制任务自动开始。

直接部署

Linux & macOS

  1. 安装 Node.js,本文推荐使用 nvm 进行版本管理,安装 nvm 请参考官方教程,本教程不再赘述。
# 通过 nvm 安装 Node.js
nvm install --lts

# 检查安装成功
node -v
npm -v
  1. 安装 FFmpeg
# Ubuntu
sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg

# Debian
sudo apt update
sudo apt install ffmpeg

# CentOS 7
sudo yum install epel-release
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
sudo yum install ffmpeg ffmpeg-devel

# CentOS 8
sudo yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo
sudo dnf install ffmpeg

# macOS
brew update
brew install ffmpeg

# 检查安装成功
ffmpeg
  1. 安装 pm2
npm i -g pm2 --registry=https://registry.npmmirror.com
# --registry=https://registry.npmmirror.com 为 npm 官方源代理
  1. 部署 StreamerHelper
git clone https://github.com/ZhangMingZhao1/StreamerHelper.git && cd StreamerHelper
npm i
npm run serve

Windows

  1. 安装 nvm 和 Node.js,直接从官方 Release 页面下载安装包运行即可。
  2. 安装 FFmpeg

官网下载二进制文件,解压到指定位置,比如C:\,然后将bin目录添加到系统环境变量path中。
image.png
image.png

  1. 安装 pm2
npm i -g pm2 --registry=https://registry.npmmirror.com
# --registry=https://registry.npmmirror.com 为 npm 官方源代理
  1. 部署 StreamerHelper
git clone https://github.com/ZhangMingZhao1/StreamerHelper.git && cd StreamerHelper
npm i
copy templates/info-example.json templates/info.json
npm run serve

修改配置

配置说明

目前不支持配置的热更新,更新配置后需要重启使配置生效。
配置项的说明如下,加粗表示必填字段:
字段名(默认值): 字段说明

  • StreamerHelper:
    • debug(false): 调试开关。
    • recycleCheckTime(300): 投稿检测间隔,单位秒。
    • roomCheckTime(600): 录制检测间隔,单位秒。
    • videoPartLimitSize(100): 投稿时忽略小于此大小的文件。
    • logLevel("error"): 此级别之上(包括)的日志将被推送,可选"TRACE"|"DEBUG"|"INFO"|"WARN"|"ERROR"。
    • push:
      • mail:
        • enable(true): 是否开启,开启时,以下字段均为必填。
        • host: STMP 服务主机。
        • port(465): STMP 服务端口。
        • from: STMP 服务邮箱,同时作为发送者邮箱。
        • pwd: STMP 服务密码。
        • to: 接受者邮箱。
        • secure(true): 是否开启安全服务
      • wechat:
        • enable: 是否开启,开启时,以下字段均为必填,该功能通过 Server 酱实现。
        • sendKey: Server 酱 sendKey
  • personInfo: 以下字段均为自动生成,如果选择 access_token 登录,需要手动填写 access_token。
    • nickname
    • access_token
    • refresh_token
    • expires_in
    • tokenSignDate
    • mid
    • cookies
  • streamerInfo: 一个数组,描述录制信息。
    • name: 主播名。
    • uploadLocalFile(true): 是否投稿。
    • deleteLocalFile(true): 是否删除本地视频文件。
    • delayTime(2): 投稿成功后延迟删除本地文件的时间(需要 deleteLocalFile 为 true),单位天。
    • templateTitle({{name}} {{time}} 录播): 稿件标题,支持占位符 {{name}} {{time}}
    • desc(Powered By StreamerHelper. https://github.com/ZhangMingZhao1/StreamerHelper): 稿件描述。
    • source({{name}} 直播间: {{roomUrl}}): 稿件直播源(需要copyright为2)。
    • dynamic({{name}} 直播间: {{roomUrl}}): 稿件动态。
    • copyright(2): 稿件来源,1 为自制 2 为转载。
    • roomUrl: 直播间地址。
    • tid: 稿件分区,详见tid表
    • tags: 稿件标签,至少一个,总数量不能超过12个,并且单个不能超过20个字,否则稿件投稿失败

例子

{
  "StreamerHelper": {
    "debug": false,
    "roomCheckTime": 600,
    "recycleCheckTime": 1800,
    "videoPartLimitSize": 100
      "logLevel": "error",
    "push": {
      "mail": {
        "enable": true,
        "host": "smtp.qq.com",
        "port": 465,
        "from": "***@qq.com",
        "pwd": "***",
        "to": "***@gmail.com",
        "secure": true
      },
      "wechat": {
        "enable": true,
        "sendKey": "***"
      }
    }
  },
  "personInfo": {
    "nickname": "",
    "access_token": "",
    "refresh_token": "",
    "expires_in": 0,
    "tokenSignDate": 0,
    "mid": 0,
    "cookies": ""
  },
  "streamerInfo": [
    {
      "name": "主播1",
      "uploadLocalFile": true,
      "deleteLocalFile": true,
      "templateTitle": "{{name}}{{time}} 直播",
      "delayTime": 0,
      "desc": "",
      "source": "",
      "dynamic": "",
      "copyright": 2,
      "roomUrl": "https://live.xxx.com/111",
      "tid": 121,
      "tags": [
        "tag1",
        "tag2",
        "tag3"
      ]
    },
    {
      "name": "主播2",
      "uploadLocalFile": true,
      "deleteLocalFile": false,
      "templateTitle": "{{name}}{{time}} 直播",
      "delayTime": 1,
      "desc": "",
      "source": "",
      "dynamic": "",
      "copyright": 2,
      "roomUrl": "https://live.xxx.com/222",
      "tid": 171,
      "tags": [
        "tag1",
        "tag2",
        "tag3"
      ]
    }
  ]
}

Environment

我们的测试机器配置以及环境如下:

cpu mem bps OS Node.js
Intel i5-4590 @ 3.30GHz 2GB 100m Ubuntu 18.04 12.18.3

可以同时下载4个主播,不会产生卡顿。

Contributor

@ZhangMingZhao1 @umuoy1 @ni00 @daofeng2015 @FortuneDayssss @bulai0408 @zsnmwy

Thanks:

TodoList

  • 支持斗鱼,虎牙,b站直播,afreeca,抖音直播快手直播,西瓜直播,花椒直播,YY 直播,战旗直播,酷狗繁星,NOW 直播,CC 直播,企鹅电竞直播
  • 自动监测主播在线
  • 自动上传b站
  • 多p下载多p上传
  • 支持多个主播
  • tag可配置,对应在info.json的每个主播
  • 支持access_token验证,防验证码
  • 重启后同时检测本地是否有上传失败的视频文件,并上传。
  • 爬虫定时区间,节省服务器流量,现支持配置房间检测间隔
  • 支持docker部署
  • 上传文件大小监测,解决主播断流问题出现很多小切片导致上传审核失败
  • 增加一个独立脚本遍历download文件夹下的视频文件重新上传(重启上传的折中解决办法,还有解决第一次账号密码配置错误失败上传的问题)
  • 支持twitch
  • 规范化log,完善debug log

Example

例子

见:https://space.bilibili.com/3356199 或者 https://space.bilibili.com/11314291

Tips

建议使用管口大的vps,否则上传下载速度可能会受影响。更新后请及时拉取像或git pull重新pm2 stop && npm run serve。vps比较低配的话配置的主播数量不要太多,也要注意vps的磁盘大小。日志文件会自动创建,在./logs/下。

有问题加qq群1142141023,备注streamerHelper

请开发者喝杯咖啡

您的捐赠和star是开发者持续维护的最大动力!