DouyinLiveRecorder README

The project's README from github.com/ihmily/DouyinLiveRecorder. As one markdown file: README.md.

video_spider

💡简介

Python Version Supported Platforms Docker Pulls GitHub issues Latest Release Downloads

一款简易的可循环值守的直播录制工具,基于FFmpeg实现多平台直播源录制,支持自定义配置录制以及直播状态推送。

😺已支持平台

🎈项目结构

.
└── DouyinLiveRecorder/
    ├── /config -> (config record)
    ├── /logs -> (save runing log file)
    ├── /backup_config -> (backup file)
    ├── /douyinliverecorder -> (package)
        ├── initializer.py-> (check and install nodejs)
    	├── spider.py-> (get live data)
    	├── stream.py-> (get live stream address)
    	├── utils.py -> (contains utility functions)
    	├── logger.py -> (logger handdle)
    	├── room.py -> (get room info)
    	├── ab_sign.py-> (generate dy token)
    	├── /javascript -> (some decrypt code)
    ├── main.py -> (main file)
    ├── ffmpeg_install.py -> (ffmpeg install script)
    ├── demo.py -> (call package test demo)
    ├── msg_push.py -> (send live status update message)
    ├── ffmpeg.exe -> (record video)
    ├── index.html -> (play m3u8 and flv video)
    ├── requirements.txt -> (library dependencies)
    ├── docker-compose.yaml -> (Container Orchestration File)
    ├── Dockerfile -> (Application Build Recipe)
    ├── StopRecording.vbs -> (stop recording script on Windows)
    ...

🌱使用说明

 

直播间链接示例:

抖音:
https://live.douyin.com/745964462470
https://v.douyin.com/iQFeBnt/
https://live.douyin.com/yall1102  (链接+抖音号)
https://v.douyin.com/CeiU5cbX  (主播主页地址)

TikTok:
https://www.tiktok.com/@pearlgaga88/live

快手:
https://live.kuaishou.com/u/yall1102

虎牙:
https://www.huya.com/52333

斗鱼:
https://www.douyu.com/3637778?dyshid=
https://www.douyu.com/topic/wzDBLS6?rid=4921614&dyshid=

YY:
https://www.yy.com/22490906/22490906

B站:
https://live.bilibili.com/320

小红书(直播间分享地址):
http://xhslink.com/xpJpfM

bigo直播:
https://www.bigo.tv/cn/716418802

buled直播:
https://app.blued.cn/live?id=Mp6G2R

SOOP:
https://play.sooplive.co.kr/sw7love

网易cc:
https://cc.163.com/583946984

千度热播:
https://qiandurebo.com/web/video.php?roomnumber=33333

PandaTV:
https://www.pandalive.co.kr/live/play/bara0109

猫耳FM:
https://fm.missevan.com/live/868895007

Look直播:
https://look.163.com/live?id=65108820&position=3

WinkTV:
https://www.winktv.co.kr/live/play/anjer1004

FlexTV(TTinglive)::
https://www.flextv.co.kr/channels/593127/live

PopkonTV:
https://www.popkontv.com/live/view?castId=wjfal007&partnerCode=P-00117
https://www.popkontv.com/channel/notices?mcid=wjfal007&mcPartnerCode=P-00117

TwitCasting:
https://twitcasting.tv/c:uonq

百度直播:
https://live.baidu.com/m/media/pclive/pchome/live.html?room_id=9175031377&tab_category

微博直播:
https://weibo.com/l/wblive/p/show/1022:2321325026370190442592

酷狗直播:
https://fanxing2.kugou.com/50428671?refer=2177&sourceFrom=

TwitchTV:
https://www.twitch.tv/gamerbee

LiveMe:
https://www.liveme.com/zh/v/17141543493018047815/index.html

花椒直播:
https://www.huajiao.com/l/345096174

流星直播:
https://www.7u66.com/100960

ShowRoom:
https://www.showroom-live.com/room/profile?room_id=480206  (主播主页地址)

Acfun:
https://live.acfun.cn/live/179922

映客直播:
https://www.inke.cn/liveroom/index.html?uid=22954469&id=1720860391070904

音播直播:
https://live.ybw1666.com/800002949

知乎直播:
https://www.zhihu.com/people/ac3a467005c5d20381a82230101308e9 (主播主页地址)

CHZZK:
https://chzzk.naver.com/live/458f6ec20b034f49e0fc6d03921646d2

嗨秀直播:
https://www.haixiutv.com/6095106

VV星球直播:
https://h5webcdn-pro.vvxqiu.com//activity/videoShare/videoShare.html?h5Server=https://h5p.vvxqiu.com&roomId=LP115924473&platformId=vvstar

17Live:
https://17.live/en/live/6302408

浪Live:
https://www.lang.live/en-US/room/3349463

畅聊直播:
https://live.tlclw.com/106188

飘飘直播:
https://m.pp.weimipopo.com/live/preview.html?uid=91648673&anchorUid=91625862&app=plpl

六间房直播:
https://v.6.cn/634435

乐嗨直播:
https://www.lehaitv.com/8059096

花猫直播:
https://h.catshow168.com/live/preview.html?uid=19066357&anchorUid=18895331

Shopee:
https://sg.shp.ee/GmpXeuf?uid=1006401066&session=802458

Youtube:
https://www.youtube.com/watch?v=cS6zS5hi1w0

淘宝(需cookie):
https://tbzb.taobao.com/live?liveId=532359023188
https://m.tb.cn/h.TWp0HTd

京东:
https://3.cn/28MLBy-E

Faceit:
https://www.faceit.com/zh/players/Compl1/stream

连接直播:
https://show.lailianjie.com/10000258

咪咕直播:
https://www.miguvideo.com/p/live/120000541321

来秀直播:
https://www.imkktv.com/h5/share/video.html?uid=1845195&roomId=1710496

Picarto:
https://www.picarto.tv/cuteavalanche

 

🎃源码运行

使用源码运行,可参考下面的步骤。

1.首先拉取或手动下载本仓库项目代码

git clone https://github.com/ihmily/DouyinLiveRecorder.git

2.进入项目文件夹,安装依赖

cd DouyinLiveRecorder

[!TIP]

  • 不论你是否已安装 Python>=3.10 环境, 都推荐使用 uv 运行, 因为它可以自动管理虚拟环境和方便地管理 Python 版本, 不过这完全是可选的
    使用以下命令安装
    # 在 macOS 和 Linux 上安装 uv
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # 在 Windows 上安装 uv
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  • 如果安装依赖速度太慢, 你可以考虑使用国内 pip 镜像源:
    在 pip 命令使用 -i 参数指定, 如 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    或者在 uv 命令 --index 选项指定, 如 uv sync --index https://pypi.tuna.tsinghua.edu.cn/simple
如果已安装 Python>=3.10 环境
  • :white_check_mark: 在虚拟环境中安装 (推荐)

    1. 创建虚拟环境

      • 使用系统已安装的 Python, 不使用 uv

        python -m venv .venv
        
      • 使用 uv, 默认使用系统 Python, 你可以添加 --python 选项指定 Python 版本而不使用系统 Python uv官方文档

        uv venv
        
    2. 在终端激活虚拟环境 (在未安装 uv 或你想要手动激活虚拟环境时执行, 若已安装 uv, 可以跳过这一步, uv 会自动激活并使用虚拟环境)

      Bash 中

      source .venv/Scripts/activate
      

      Powershell 中

      .venv\Scripts\activate.ps1
      

      Windows CMD 中

      .venv\Scripts\activate.bat
      
    3. 安装依赖

      # 使用 pip (若安装太慢或失败, 可使用 `-i` 指定镜像源)
      pip3 install -U pip && pip3 install -r requirements.txt
      # 或者使用 uv (可使用 `--index` 指定镜像源)
      uv sync
      # 或者
      uv pip sync requirements.txt
      
  • :x: 在系统 Python 环境中安装 (不推荐)

    pip3 install -U pip && pip3 install -r requirements.txt
    
如果未安装 Python>=3.10 环境

你可以使用 uv 安装依赖

# uv 将使用 3.10 及以上的最新 python 发行版自动创建并使用虚拟环境, 可使用 --python 选项指定 python 版本, 参见 https://docs.astral.sh/uv/reference/cli/#uv-sync--python 和 https://docs.astral.sh/uv/reference/cli/#uv-pip-sync--python
uv sync
# 或
uv pip sync requirements.txt

3.安装FFmpeg,如果是Windows系统,这一步可跳过。对于Linux系统,执行以下命令安装

CentOS执行

yum install epel-release
yum install ffmpeg

Ubuntu则执行

apt update
apt install ffmpeg

macOS 执行

如果已经安装 Homebrew 请跳过这一步

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install ffmpeg

4.运行程序

python main.py

或

uv run main.py

其中Linux系统请使用python3 main.py 运行。

 

🐋容器运行

在运行命令之前,请确保您的机器上安装了 Docker 和 Docker Compose

1.快速启动

最简单方法是运行项目中的 docker-compose.yaml 文件,只需简单执行以下命令:

docker-compose up

可选 -d 在后台运行。

2.构建镜像(可选)

如果你只想简单的运行程序,则不需要做这一步。Docker镜像仓库中代码版本可能不是最新的,如果要运行本仓库主分支最新代码,可以本地自定义构建,通过修改 docker-compose.yaml 文件,如将镜像名修改为 douyin-live-recorder:latest,并取消 # build: . 注释,然后再执行

docker build -t douyin-live-recorder:latest .
docker-compose up

或者直接使用下面命令进行构建并启动

docker-compose -f docker-compose.yaml up

3.停止容器实例

docker-compose stop

4.注意事项

①在docker容器内运行本程序之前,请先在配置文件中添加要录制的直播间地址。

②在容器内时,如果手动中断容器运行停止录制,会导致正在录制的视频文件损坏!

无论哪种运行方式,为避免手动中断或者异常中断导致录制的视频文件损坏的情况,推荐使用 ts 格式保存。

 

🤖相关项目

 

❤️贡献者

   Hmily iridescentGray annidy wwkk2580 missuo xueli12 kaine1973 yinruiqing Max-Tortoise justdoiting dhbxs wujiyu115 zhanghao333 gyc0123

   HoratioShaw nov30th 727155455 nixingshiguang 1411430556 Ovear  

⏳提交日志

点击展开更多提交日志
  • 20240129
    • 新增猫耳FM直播录制
  • 20240127
    • 新增千度热播直播录制、新增pandaTV(韩国)直播录制
    • 新增telegram直播状态消息推送,修复了某些bug
    • 新增自定义设置不同直播间的录制画质(即每个直播间录制画质可不同)
    • 修改录制视频保存路径为 downloads 文件夹,并且分平台进行保存。
  • 20240114
    • 新增网易cc直播录制,优化ffmpeg参数,修改AfreecaTV输入直播地址格式
    • 修改日志记录器 @iridescentGray
  • 20240102
    • 修复Linux上运行,新增docker配置文件
  • 20231210
    • 修复录制分段bug,修复bigo录制检测bug
    • 新增自定义修改录制主播名
    • 新增AfreecaTV直播录制,修复某些可能会发生的bug
  • 20231207
    • 新增blued直播录制,修复YY直播录制,新增直播结束消息推送
  • 20231206
    • 新增bigo直播录制
  • 20231203
    • 新增小红书直播录制(全网首发),目前小红书官方没有切换清晰度功能,因此直播录制也只有默认画质
    • 小红书录制暂时无法循环监测,每次主播开启直播,都要重新获取一次链接
    • 获取链接的方式为 将直播间转发到微信,在微信中打开后,复制页面的链接。
  • 20231030
    • 本次更新只是进行修复,没时间新增功能。
    • 欢迎各位大佬提pr 帮忙更新维护
  • 20230930
    • 新增抖音从接口获取直播流,增强稳定性
    • 修改快手获取直播流的方式,改用从官方接口获取
    • 祝大家中秋节快乐!
  • 20230919
    • 修复了快手版本更新后录制出错的问题,增加了其自动获取cookie(稳定性未知)
    • 修复了TikTok显示正在直播但不进行录制的问题
  • 20230907
    • 修复了因抖音官方更新了版本导致的录制出错以及短链接转换出错
    • 修复B站无法录制原画视频的bug
    • 修改了配置文件字段,新增各平台自定义设置Cookie
  • 20230903
    • 修复了TikTok录制时报644无法录制的问题
    • 新增直播状态推送到钉钉和微信的功能,如有需要请看 设置推送教程
    • 最近比较忙,其他问题有时间再更新
  • 20230816
    • 修复斗鱼直播(官方更新了字段)和快手直播录制出错的问题
  • 20230814
    • 新增B站直播录制
    • 写了一个在线播放M3U8和FLV视频的网页源码,打开即可食用
  • 20230812
    • 新增YY直播录制
  • 20230808
    • 修复主播重新开播无法再次录制的问题
  • 20230807
    • 新增了斗鱼直播录制
    • 修复显示录制完成之后会重新开始录制的问题
  • 20230805
    • 新增了虎牙直播录制,其暂时只能用flv视频流进行录制
    • Web API 新增了快手和虎牙这两个平台的直播流解析(TikTok要代理)
  • 20230804
    • 新增了快手直播录制,优化了部分代码
    • 上传了一个自动化获取抖音直播间页面Cookie的代码,可以用于录制
  • 20230803
    • 通宵更新
    • 新增了国际版抖音TikTok的直播录制,去除冗余 简化了部分代码
  • 20230724
    • 新增了一个通过抖音直播间地址获取直播视频流链接的API接口,上传即可用
 

有问题可以提issue, 我会在这里持续添加更多直播平台的录制 欢迎Star

DouyinLiveRecorder (ihmily/DouyinLiveRecorder)

Searching Database…

Что это такое?DouyinLiveRecorder — это инструмент на Python, который непрерывно записывает прямые трансляции с более чем 40 платформ (Douyin, TikTok, Kuaishou, Huya, Douyu, YouTube, Bilibili, Xiaohongshu, Twitch и многие другие) и может одновременно следить за несколькими комнатами.
Это отдельная программа или скрипт, который я запускаю из исходного кода?Работает и так, и так: пользователи Windows могут скачать готовый .exe из Releases, либо запустить программу из исходного кода с Python на Windows, Linux или macOS, либо развернуть её через Docker.
Как это запустить?Добавьте ссылки на комнаты в config/URLconfig.ini (по одной на строку), при необходимости измените config.ini, затем запустите DouyinLiveRecorder.exe (Windows) или `python main.py` после установки зависимостей через pip или uv; для развёртывания в контейнере также есть docker-compose.yaml.
Что нужно установить помимо самого приложения?Нужен FFmpeg (в релизе для Windows он включён в комплект, но явно не указан; на Linux и macOS его ставят вручную через apt, yum или Homebrew). При запуске из исходного кода нужен Python 3.10+; если вы используете контейнер, понадобятся Docker и Docker Compose.
Есть ли подводные камни при записи или остановке?Для зарубежных платформ, таких как TikTok или AfreecaTV, нужно указать адрес прокси. Если принудительно завершить программу записи (а не остановить её корректно через Ctrl+C или закомментировав ссылку), видеофайл может повредиться. Чтобы этого избежать, рекомендуется использовать формат ts.
Для кого это и работает ли вне Windows?Инструмент рассчитан на тех, кто хочет надолго сохранять архив прямых трансляций. Помимо Windows, он явно поддерживает запуск на Linux и macOS из исходного кода или через Docker.
Можно ли задавать качество записи для каждой комнаты отдельно?Да: перед ссылкой на комнату можно указать ключевое слово качества (через запятую), чтобы задать другое разрешение для конкретной трансляции. По умолчанию используется максимальное качество (оригинал).
Как получать уведомления, когда трансляция начинается?Инструмент поддерживает push-уведомления по email, WeChat, DingTalk, Telegram, Bark и ntfy о том, что отслеживаемая комната начала или прекратила трансляцию.
Как временно пропустить комнату, не удаляя её?Добавьте # в начало строки со ссылкой на эту комнату в URLconfig.ini. Мониторинг и запись для неё будут приостановлены, а сама строка сохранится до следующего раза.
Как безопасно остановить запись, чтобы файлы не повредились?В Windows запустите прилагаемый скрипт StopRecording.vbs или нажмите Ctrl+C в консоли. Чтобы остановить запись только одной комнаты, закомментируйте её ссылку символом #.
Creator
ihmily
Size
18.2 MB
Stars
11.1K
Age
3y
Commits · 90 Days