1.3.0 • Published 6 months ago

@bililive-tools/bilibili-recorder v1.3.0

Weekly downloads
-
License
LGPL
Repository
github
Last release
6 months ago

Intro

原项目:https://github.com/WhiteMinds/BilibiliRecorder

这是 biliLive-tools 的一个平台插件,为其支持了 Bilibili 平台录制

安装

建议所有录制器和manager包都升级到最新版,我不会对兼容性做过多考虑

npm i @bililive-tools/bilibili-recorder @bililive-tools/manager

使用

import { createRecorderManager } from "@bililive-tools/manager";
import { provider } from "@bililive-tools/bilibili-recorder";

const manager = createRecorderManager({ providers: [provider] });
manager.addRecorder({
  providerId: provider.id,
  channelId: "7734200",
  quality: 10000,
  streamPriorities: [],
  sourcePriorities: [],
});

// 录制前请设置好ffmepg的环境变量,或手动指定,具体见`@bililive-tools/manager`文档
manager.startCheckLoop();

参数

interface Options {
  channelId: string; // 长直播间ID,具体解析见文档,也可自行解析
  quality: number; // 见画质参数
  qualityRetry?: number; // 画质匹配重试次数, -1为强制匹配画质,0为自动配置,正整数为最大匹配次数
  streamPriorities: []; // 废弃
  sourcePriorities: []; // 废弃
  disableAutoCheck?: boolean; // 为 true 时 manager 将跳过自动检查
  segment?: number; // 分段参数,单位分钟
  disableProvideCommentsWhenRecording?: boolean; // 禁用弹幕录制
  saveGiftDanma?: boolean; // 保存礼物弹幕,包含舰长
  saveSCDanma?: boolean; // 保存SC
  saveCover?: boolean; // 保存封面
  auth?: string; // 登录所需cookie
  uid?: number; // cookie所有者uid,用于弹幕录制
  formatName?: FormatName; // 见 formatName 参数
  codecName?: CodecName; // 见 CodecName 参数
  useM3U8Proxy?: boolean; // 是否使用m3u8代理,由于hls及fmp4存在一个小时超时时间,需自行实现代理避免
  m3u8ProxyUrl?: string; // 代理链接,文档待补充
  videoFormat?: "auto"; // 视频格式: "auto", "ts", "mkv" ,auto模式下, 分段使用 "ts",不分段使用 "mp4"
}

画质

B站录制高画质需要登录,在无法匹配到画质时,会优先使用高画质

画质
杜比30000
4K20000
原画10000
蓝光400
超清250
高清150
流畅80

formatName

用于控制flv,hls(ts),hls(fmp4)

能否录制flv下的hevc和你的ffmpeg版本有关

解释
等于flvauto
优先使用flvflv
优先使用hlshls
只使用fmp4fmp4
只使用flvflv_only
只使用hlshls_only
只使用fmp4fmp4_only

CodecName

用于控制使用avc还是hevc

解释
等于avcauto
优先使用avcavc
优先使用hevchevc
只使用avcavc_only
只使用hevchevc_only

直播间ID解析

解析出长直播间ID

import { provider } from "@bililive-tools/bilibili-recorder";

const url = "https://live.bilibili.com/5055636";
const { id } = await provider.resolveChannelInfoFromURL(url);

协议

与原项目保存一致为 LGPL