Skip to content

一个自动监测和录制抖音直播的工具,支持录制弹幕,以GUI或命令行形式运行,支持linux,无需设置cookie,不使用selenium,开箱即用。

Notifications You must be signed in to change notification settings

LyzenX/DouyinLiveRecorder

Repository files navigation

抖音直播录制工具

通知

由于个人原因没有时间继续维护本项目,目前本项目的“未知直播间地址时,也可以通过主播主页来监测直播”功能已失效,“自动转码”因会损坏视频而被移除(请用b站录播姬的录播修复功能对视频进行修复后再手动转码),其他功能仍可正常使用,故在不出大问题前不作修改。

对于“未知直播间地址时,也可以通过主播主页来监测直播”功能,因旧接口被抖音移除,已花费大量时间尝试新接口但均以失败告终,因为没有时间所以没有继续尝试。

目前因为一些接口失效,命令行或log中会产生大量报错,但不影响基本功能(旧接口报错备用接口生效),因此不用管。


补充:2024.6.20弹幕录制似乎已失效,测试发现是抖音更新了接口需要signature导致的

2024.6.22 稍微逆了一下发现有点费时间,由于没有空,参考另一个遇到相同问题并已修复的项目billup。懒人开箱即用版还没更新,请clone下来使用。

2024.6.25 增加了一个命令行下按L键查看正在录制的房间的功能(需在config中手动开启,仅Windows下有效)


目前问的较多的一些问题

  1. 自动转码、录制的无法播放:因为录制的是原始数据,方便做处理但很容易无法正常播放,所以移除了自动转码的功能(防止进一步损坏视频)。请使用 b站录播姬 的录播修复工具进行修复,不要用ffmpeg直接转码。
  2. 最新版本python无法运行:请尝试使用3.8、3.9的版本运行,记得安装依赖(pip install -r requirements.txt)

特点

  • 支持无人值守自动监测和录制多个主播的直播。
  • 支持录制弹幕
  • 未知直播间地址时,也可以通过主播主页来监测直播,因此可以监测没开过直播的、开播时间阴间导致从未赶上直播的主播。
  • 支持自动获取 cookie,并在 cookie 失效时自动重新获取。无需手动获取 cookie。
  • 不使用 selenium,不需要安装浏览器,几乎开箱即用。
  • 支持自定义脚本、插件,以自定义开播推送等功能。
  • 高性能,奶奶家的老爷机、1核2G的经济型服务器都能录制。
  • 支持 linux。
  • 理论上支持 mac,但未测试,如果是 mac 用户可以参考 linux 的安装和使用方法,勤使用搜索引擎。

缺点

  • 由于是根据作者本人自用的需求而开发的,因此不支持诸如更改清晰度(直接录制最高清晰度)、最大文件长度之类的功能,以后可能会加入这些功能。
  • 高级功能如插件、推送等的使用门槛较高,可能要会写 python 代码。
  • 因新鲜出炉,尚未测试足够长时间,可能有较多 bug。
  • 不能保证失效时及时维护

说明

如果有bug或有什么建议的话请发issues,建议贴上日志( logs 文件夹下遇到 bug 时对应的日志)

软件仅供个人科研性质使用,禁止商业使用,禁止不正当使用,不接受定制,不接受捐助。

本人从未、将来也不会从本软件中获利。没有义务保证软件长期有效和及时更新,没有义务对所有遇到的问题都作解答,任何对软件的不正当修改和使用所造成的危害由使用者负责。已有非法修改该类软件并用于非法用途的人被相关机关逮捕,请大家引以为戒。

目前更新软件的方式是下载最新软件(建议重新安装依赖),并把旧软件的 room.json 复制到新目录下,config.txt 可能要重新配置,因为新旧版本配置不兼容。

使用方法

下载软件并解压,进入到解压后的目录,你能看到在这个目录下的 运行命令行版.bat 等文件,这个目录称为软件根目录

Windows平台安装

首先安装 python 并将其添加到环境变量(可以在安装过程中勾选 Add Python x.x to PATH),如果是新手的话可以百度搜索 Python 安装,有手把手教程。

Windows平台可以按键盘上的 Win + R,并在文本框中输入cmd,回车,打开命令提示符,并在命令提示符中输入python --version,如果输出了python的版本,则表明安装成功。

如果是 Windows 10/11,执行命令python后可能什么都不输出,甚至会出现打开微软应用商店的迷惑行为,可以百度搜索python弹出微软应用商店

Linux平台(无图形化界面)安装

如果使用 Linux 应该会安装 python吧。

使用方法见下方

安装依赖

pip install -r requirements.txt

配置文件

在软件根目录下找到 config.txt,用文本编辑器打开它。里面对各选项都作了说明,可以根据自己的需求调整。

linux 服务器可以考虑使用 bypy 来上传录制到的文件,以便在自己的 PC 中转码和渲染弹幕。可以使用插件(下面说明)来实现自动上传。

设置房间

可以在 GUI 界面中点击下方的 添加主播 来添加房间,支持 Web_Sid、直播间地址、直播间短链、主播主页。

使用纯命令行的用户,可以先在有 GUI 的平台下添加好房间,再把 room.json 复制到纯命令行平台下。或者:

在软件根目录下找到 room.json,用文本编辑器打开它,下面是几个例子:

[
  {
    "id": 71034333127,
    "name": "主播名1",
    "auto_record": true,
    "record_danmu": true,
    "important": false
  },
  {
    "id": 851917085931,
    "name": "主播名2",
    "auto_record": true,
    "record_danmu": true,
    "important": false
  }
]

id 是房间的 Web_Rid,即用网页版打开直播间(也可以自己在网页输入直播分享的短链,会跳转另一链接),链接为 live.xxx.com/123456789?roomid=...

这个 123456789 就是 Web_Rid 。

name 可以填主播名,同时也是录制到的文件所存放的目录名,由于一些主播会经常改名,所以不自动获取名称,你可以自己填一个容易记的名字。

auto_record 是否自动监测和录制,一般是 true,如果不想录了又怕删掉它下次不方便加回来,可以改成 false。

record_danmu 为是否录制弹幕,对性能要求较高,根据实际需求和录制设备性能决定。

important 为 true 的情况下,该主播使用独立线程检测,以保证第一时间录到直播。不建议添加太多重要主播

注:非重要主播全部在同一个线程中进行排队检测,因此主播数量越多,捕捉到开播越不及时。

运行

双击 main.pyw 即可运行 GUI 版。

运行命令行版,Windows 平台直接打开 运行命令行版.bat 就可以了。

Windows 或 Linux 下,在软件根目录下执行指令 python3 main.pyw

对于命令行版,当配置或房间修改时,需要重新启动软件才能生效。

下载的文件存放于 根目录/download 下。

自动转码

需要下载 ffmpeg,可以放在软件根目录下或其他位置,在 config.txt 中配置 ffmpeg 所在目录,并配置自动转码选项。

插件

在 src/plugin/plugin.py 中编写你的插件,比如当直播开始时向一个 api POST 一个信息以便通知你开播了:

def on_live_start(room, filename):
    requests.post(f'123.45.67.89:65565/?room_name={room.room_name}')

对录制到的文件进行处理

下载到的文件是flv格式,由于时间戳错误等,许多软件播放有异常,可以使用 PotPlayer 播放,但仍存在拖拽进度条卡顿等问题,你可以尝试转码:

下载 ffmpeg 并将其添加到环境变量中(网上有教程),假设录到的文件名是 20230114_123456.flv,执行指令:

ffmpeg -i 20230114_123456.flv -c copy 20230114_123456.mp4

可以进行无损转码,且速度非常快,还能修复部分由于时间戳错误造成的问题。

建议使用 b站录播姬 的录播修复工具进行修复,ffmpeg容易修坏。不过不能保证 100% 的修复成功率,建议保留录制到的原始文件以便以后修复。

如果不嫌转码麻烦费时的话,可以只保留原始 flv 格式,要用的时候才转为 mp4 格式,以免日后发现转码后的视频有问题时,原flv文件已经删了。

下载的弹幕是类 b站xml 格式的,可以使用 nicovert 来转为 ass 格式字幕文件,播放时拖入 PotPlayer 就能显示弹幕了。

如果要将弹幕渲染到视频中,可以使用命令:

ffmpeg -i 20230114_123456.flv -vf ass=20230114_123456.ass 有弹幕.mp4

但是这样如果原视频模糊或帧数低的话,弹幕也会模糊或一卡一卡的,你可以先生成一个高质量中间文件,再渲染弹幕:

ffmpeg -i 20230114_123456.flv -c:v h264 -b:v 5824k -vf scale=iw*2:ih*2 -c:a copy -r 60 hq.mp4
ffmpeg -i hq.mp4 -c:v h264 -b:v 5824k -vf ass=20230114_123456.ass -c:a copy 有弹幕.mp4

免责声明

软件主要以科研为目的,禁止用于任何形式的直接或间接的商业用途,包括但不限于付费帮录制、付费定制改版软件、付费分发本软件或本软件的改版、直接以本软件作为付费爬虫课程的案例等。

禁止非法修改,包括但不限于往软件中植入病毒木马、非法获取用户隐私等

禁止非法使用,包括但不限于未经主播本人同意非法录制和上传直播录像、用于非法监控他人、大量录制给抖音服务器造成压力等。

任何非法修改与非法使用等均与软件作者本人无关,由非法修改者或非法使用者负责。

参考项目

About

一个自动监测和录制抖音直播的工具,支持录制弹幕,以GUI或命令行形式运行,支持linux,无需设置cookie,不使用selenium,开箱即用。

Resources

Stars

Watchers

Forks

Packages

No packages published