ZhangMingZhao1 / StreamerHelper

全平台主播录制+投稿 工具/服务
MIT License
1.13k stars 175 forks source link

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,
    "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:

@ForgQi @FortuneDayssss

TodoList

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是开发者持续维护的最大动力!