Skip to content

AsaChiri/DDRecorder

Repository files navigation

DDRecorder

Headless 全自动 B 站直播录播、切片、上传一体工具

>=1.1.2 版本增加了自动检查更新功能,需要连接至 Github 服务器,敬请留意。

感谢

FortuneDayssss/BilibiliUploader MoyuScript/bilibili-api ForgQi/biliup-rs fastnlp/fastHan

参考文献

@inproceedings{geng-etal-2021-fasthan,
  author = {Geng, Zhichao and Yan, Hang and Qiu, Xipeng and Huang, Xuanjing},
  title = {fastHan: A BERT-based Multi-Task Toolkit for Chinese NLP},
  booktitle = {Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing: System Demonstrations},
  year = {2021},
  pages = {99--106}, 
  url = {https://aclanthology.org/2021.acl-demo.12}
}

安装指南(Windows)

  1. 在 Release 下载 zip 包解压。
  2. 修改配置文件 config.json 可以选择使用自带的 DDRecorderConfigManager(源码:AsaChiri/DDRecorderConfigManager)
  3. 双击运行 DDRecorder.exe(这将使用 config.json)或 DDRecorder.exe <配置文件>

安装指南(MacOS/Linux)

  1. 安装 Python >= 3.9 https://www.python.org/downloads/release/python-3104/
  2. 安装 ffmpeg https://ffmpeg.org/download.html
  3. 执行 pip install -r requirements.txt
  4. 修改 config 文件夹下的配置文件 config.json
  5. 执行 python main.py <配置文件>

配置文件字段解释

关于登录

由于 B 站风控原因,账号密码登录失败(被风控)的可能性极高,建议获取 access_token,refresh_token 和 cookies 项目填入配置文件中;目前推荐使用 biliup-rs 进行一次登录获取 access_token,refresh_token 和 cookies 项目后填入配置文件中。如果您使用 DDRecorderConfigManager,则相应功能已经集成。

关于占位符

目前可以在配置文件里使用的占位符如下:

  • {date} :日期(格式为“2022 年 02 月 02 日”)
  • {room_name} :最近的直播间标题
  • {year},{month},{day},{hour},{minute},{second}:直播开始时间的年、月、日、时、分、秒
  • {rough_time}:直播开始时间的大概描述(凌晨、上午、下午、晚上)

关于手动切片

手动切片功能类似于 Nvidia 的 ShadowPlay 功能,在配置文件中的"manual_clipper"部分可以找到手动切片器相关设置。

在启用相关功能并指定接受指令的用户 UID,该用户可以在直播时发送特定弹幕来控制 DDRecorder 进行切片。

特定弹幕格式为/DDR clip <回溯时间(秒)> [描述文本]。其中描述文本可选,如果不指定描述文本,将会自动设置一个“手动切片_{编号}”的表述文本。

比如说,如果想要截取当前时间向前 5 分钟的内容,只需要发送/DDR clip 300

如果想要指定描述文本为“主播锐评 ylg”,发送/DDR clip 60 主播锐评ylg即可。

手动切片的将会输出到与自动切片相同的文件夹,因此受到 uploader-clippers 中的设置项控制。即如果打开了自动上传切片功能,手动切片同样也会上传,不过分 P 名将不再是自动采集的弹幕关键词,而是上面所述的描述文本。

全局设置(root 部分)

  • check_interval: 直播间开播状态检查间隔,单位为秒,每个监控直播间单独计数,因此如果监控直播间较多,建议适当调大。由于 B 站 API 访问次数限制,建议不要小于 30。默认:100
  • print_interval:控制台消息打印间隔,单位为秒。
  • data_path: 数据文件路径。默认:"./"(即程序所在路径)
  • logger: 日志相关设置
    • log_path: 日志文件路径。默认:"./log"
    • log_level: 日志级别,可选 DEBUG\INFO\WARN
  • request_header: 请求时使用的头。代码中已经包含了一个默认的,在这里进行调整将会覆盖默认值,如无必要请留空。
  • uploader: 上传器相关设置
    • lines: 上传使用的线路,可以选择 bda2, kodo, ws, qn, cos, cos-internal(支持腾讯云内网免流 + 提速)
  • enable_baiduyun:是否开启百度云功能。

直播间特定设置(spec 部分,此部分是一个数组,如果需要同时监控多个直播间,依次添加至数组中即可)

  • room_id: 房间号
  • recorder: 录制器相关设置
    • keep_raw_record: 是否保留原始录像(flv)文件(录制器最后会合并所有 flv 文件导出 mp4)。默认:true
  • parser: 弹幕分析器相关设置
    • interval: 弹幕计数间隔,单位秒。默认:30.
    • up_ratio: 开始切片位置弹幕数量与上一个时段弹幕数量之比的阈值。默认:2.5
    • down_ratio: 结束切片位置弹幕数量与上一个时段弹幕数量之比的阈值。默认:0.75
    • topK: 提取弹幕关键词的数量。默认:5
  • clipper: 切片器相关设置
    • enable_clipper: 启用切片功能。默认:true
    • min_length: 切片最短长度,单位秒。默认:60
    • start_offset: 切片开始时间偏移量,正为向后偏移,负为向前偏移,单位秒。默认:0。建议根据直播间弹幕延迟调整。
    • end_offset: 切片结束时间偏移量,正为向后偏移,负为向前偏移,单位秒。默认:0。建议根据直播间弹幕延迟调整。
  • manual_clipper: 手动切片器相关设置
    • enabled:启用手动切片器功能。默认:false
    • uid:手动切片器接受指令的用户 UID。
    • command: 自定义手动切片触发指令。
  • uploader: 上传器相关设置
    • account: 上传账户信息
      • username: 用户名
      • password: 密码
      • access_token: Access token
      • refresh_token: Refresh token
      • cookies:
        • SESSDATA: your SESSDATA
        • bili_jct: your bili_jct
        • DedeUserID: your DedeUserID
        • DedeUserID__ckMd5: your DedeUserID__ckMd5
        • sid: your sid
    • copyright: 稿件类型(1:自制,2:转载)警告!未经授权投稿“自制”可能导致稿件无法通过审核!
    • record: 录播上传设置
      • upload_record: 是否上传录播。默认:true
      • keep_record_after_upload: 是否在上传过审后保留录播。默认:true
      • split_interval: 录播划分间隔,单位秒。由于 B 站无法一次上传大文件,因此长录播需要分片才能上传。默认:3600。如设为 0,表示不划分,如此请保证账号具有上传超大文件权限。
      • title:上传视频的标题,可以使用占位符。
      • tid:分区编号,可在 https://github.com/FortuneDayssss/BilibiliUploader/wiki/Bilibili%E5%88%86%E5%8C%BA%E5%88%97%E8%A1%A8 查询
      • tags:上传视频的标签
      • desc:上传视频的描述,可以使用占位符。
      • cover:上传视频使用的封面文件路径。
    • clippers: 切片上传设置
  • backup:是否将录像备份到百度云。

已知问题

  • record 文件夹下产生大量空文件夹。(Work-around patch)
  • 自动上传无法登录,电磁力不足无法投稿分 P 稿件。(已更新)
  • 被 B 站风控系统 412 后会无法工作。(预期下个功能更新优化。)
  • PK 导致分辨率不正确出现花屏。(正在调查。)

预期更新

  • 弹幕 jsonl 转为 ass 字幕并自动压入录播文件的功能。(预期下个功能更新。)
  • 不上传百度也会在切片和或录播上传完成后删去 merge 文件的功能。(预期下个功能更新。说实话不是很想加这个功能,可能这就是仓鼠症患者吧……
  • 增加斗鱼、Twitch 和油管支持。(预期当前功能稳定后加入。)