[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>/<昵称> 为实际值)
复现步骤
- 找一个以"语音/聊天室"形式开播的主播(开播后无视频画面,仅音频+公屏),复制其主页分享链接
- 链接加入
URL_config.ini,运行main.py循环值守 - 主播开播后观察日志:每轮询周期(默认 300s,本例配置 60s)都抛出上述两条错误,交替出现,永不进入录制
源码初步诊断(基于 v4.0.7)
- web 接口路径(
src/spider.pyL95-108,get_douyin_web_stream_data):webcast/room/web/enter/对语音聊天房返回的data为空数组,命中if not json_data['data']抛出 "VR live is not supported"。 - app 接口路径(
src/spider.pyL159-175,get_app_data):webcast/room/reflow/info请求参数中type_id固定为"0";语音聊天房返回的data中没有room键,同样命中 L175 的抛错。猜测聊天房需要不同的type_id(或走其他接口分支)才能取到房间数据。 - fallback 路径(
src/room.pyL90-103,get_unique_id): 从 iesdouyin 分享页正则提取unique_id失败,第三条路也走不通。
期望行为
- 最低期望:识别出"语音直播/聊天房"类型并在日志给出明确提示(如"语音直播暂不支持录制,跳过"),避免无限重试刷日志、误导使用者以为在正常值守。
- 理想期望:支持纯音频房录制。网页端播放语音房时可以正常出声,说明服务端存在可拉取的音频流(音频 m3u8/flv);若能拿到,交给 ffmpeg 录制即可,输出格式可复用现有的
mp3音频/m4a音频选项,成本应该不高。
相关 issue
搜索后确认这是长期未覆盖的需求,已有几个开放 issue,本报告补充了源码层面的诊断细节,希望对实现有帮助:
- #531 抖音的语音直播无法录制
- #889 [Question] 抖音语音直播无法录制
- #1268 [Feature] 能否支持抖音语音直播的录制
其他
如果需要,我可以在有语音房开播时配合抓包提供(脱敏后的)接口返回结构,协助定位聊天房数据的正确获取方式。感谢作者维护这么好用的工具。
Source: ihmily/DouyinLiveRecorder