[Feature] 支持抖音语音聊天直播(纯音频房)的录制:当前报 "VR live is not supported" 并无限重试

Author: nannant666Created Sep 7, 2026Updated Sep 7, 2026

环境信息

  • 版本:v4.0.7(当前最新 release)
  • 系统:Linux (Debian 11),Python 3.12(venv),ffmpeg 4.3.9
  • 使用方式:循环值守模式,输入为主页分享链接(v.douyin.com 短链 → share/user 主页),未配置代理
  • 触发场景:主播以语音聊天形式开播(纯音频、无视频画面,抖音 App 内常用于电台/聊天/连麦场景)

问题描述

主播以语音聊天房形式开播时,工具能识别到主播(昵称可正常解析),但拉流阶段每一轮询周期都失败,永不开始录制,日志持续刷重试信息:

Error message: Douyin web data fetch error, because https://live.douyin.com/<unique_id> VR live is not supported. Error line: 108
序号1 网址内容获取失败,进行重试中...获取失败的地址是:('原画', 'https://v.douyin.com/xxxx/', '主播: <昵称>')

Error message: An error occurred: Could not find unique_id in the response. Error line: 192
序号1 网址内容获取失败,进行重试中...

(已脱敏,<unique_id>/<昵称> 为实际值)

复现步骤

  1. 找一个以"语音/聊天室"形式开播的主播(开播后无视频画面,仅音频+公屏),复制其主页分享链接
  2. 链接加入 URL_config.ini,运行 main.py 循环值守
  3. 主播开播后观察日志:每轮询周期(默认 300s,本例配置 60s)都抛出上述两条错误,交替出现,永不进入录制

源码初步诊断(基于 v4.0.7)

  1. web 接口路径src/spider.py L95-108,get_douyin_web_stream_data): webcast/room/web/enter/ 对语音聊天房返回的 data 为空数组,命中 if not json_data['data'] 抛出 "VR live is not supported"。
  2. app 接口路径src/spider.py L159-175,get_app_data): webcast/room/reflow/info 请求参数中 type_id 固定为 "0";语音聊天房返回的 data 中没有 room 键,同样命中 L175 的抛错。猜测聊天房需要不同的 type_id(或走其他接口分支)才能取到房间数据。
  3. fallback 路径src/room.py L90-103,get_unique_id): 从 iesdouyin 分享页正则提取 unique_id 失败,第三条路也走不通。

期望行为

  1. 最低期望:识别出"语音直播/聊天房"类型并在日志给出明确提示(如"语音直播暂不支持录制,跳过"),避免无限重试刷日志、误导使用者以为在正常值守。
  2. 理想期望:支持纯音频房录制。网页端播放语音房时可以正常出声,说明服务端存在可拉取的音频流(音频 m3u8/flv);若能拿到,交给 ffmpeg 录制即可,输出格式可复用现有的 mp3音频/m4a音频 选项,成本应该不高。

相关 issue

搜索后确认这是长期未覆盖的需求,已有几个开放 issue,本报告补充了源码层面的诊断细节,希望对实现有帮助:

  • #531 抖音的语音直播无法录制
  • #889 [Question] 抖音语音直播无法录制
  • #1268 [Feature] 能否支持抖音语音直播的录制

其他

如果需要,我可以在有语音房开播时配合抓包提供(脱敏后的)接口返回结构,协助定位聊天房数据的正确获取方式。感谢作者维护这么好用的工具。

Source: ihmily/DouyinLiveRecorder