# 弹幕录制
弹幕录制是指 DDTV 在录制直播视频的同时,把直播间的弹幕、礼物、大航海(舰队)、醒目留言(SC)也保存成文件,并且保存的时间轴与视频对齐。适合想做"带弹幕回放"、烤肉的切片man,或者想留档分析直播数据的用户。
# 这是什么
开启后,只要房间在录制,DDTV 就会同时连接该房间的弹幕服务器,把收到的每一类消息按"出现在视频第几秒"记录下来。这样以后用支持弹幕回放的播放器(如弹弹play)加载弹幕文件时,弹幕出现的位置和直播当时完全一致。
除了弹幕本身,以下内容也会被记录:
- 礼物(包括盲盒爆出的礼物)
- 大航海开通/续费(舰长、提督、总督)
- 醒目留言(SuperChat)
# 怎么开启
弹幕录制是按房间单独开关的:
- Desktop(桌面版):在房间列表中给对应房间打开"录制弹幕"开关
- WEBUI:在房间管理页面给对应房间打开"录制弹幕"开关
该开关保存在 ./Config/RoomListConfig.json 中,对应每个房间的 IsRecDanmu 字段(true 为开启)。
TIP
弹幕录制依附于录制任务:只有房间处于录制状态时弹幕才会被保存;只开"录制弹幕"而不录制(自动录制或手动录制)是不会产生弹幕文件的。
# 产物文件
弹幕文件与视频文件保存在同一目录,文件名主体与视频文件一致(视频名去掉 _original.mp4 / _original.flv 后缀后加上分段编号)。一次录制可能产生以下文件(没有对应内容时不会生成空文件):
| 文件 | 内容 |
|---|---|
xxx_0.xml | 标准 B 站弹幕 XML 文件,可直接用于弹弹play 等支持弹幕回放的播放器 |
xxx_0_弹幕.csv | 弹幕记录,列结构:时间,昵称,Uid,弹幕内容 |
xxx_0_礼物.csv | 礼物记录,列结构:视频时间,送礼人昵称,送礼人Uid,礼物名称,礼物数量,礼物单价,时间戳 |
xxx_0_舰队.csv | 大航海记录,列结构:视频时间,送礼人昵称,送礼人Uid,上舰类型,上舰时间,每月价格,时间戳 |
xxx_0_SC.csv | SC 记录,列结构:视频时间,送礼人昵称,送礼人Uid,SC金额,消息原文,翻译消息,时间戳 |
说明:
- CSV 中的"时间/视频时间"是该消息出现在视频里的时间(秒),与视频时间轴对齐;"时间戳"是消息发出的真实 Unix 时间戳。
- 文件名中的
0是分段编号。如果录制过程中发生了切割(见自动切割),后续分段的弹幕会保存为xxx_1.xml、xxx_1_弹幕.csv……依次递增,保证每段弹幕与每段视频对应。 - 舰队文件中的"上舰类型"会直接写成"总督/提督/舰长",大航海续费也会记录在这里。
# 工作原理与注意事项
- 断线自动重连:弹幕连接断开后会自动重连(5 秒内不会重复触发重连),重连期间的消息会丢失,但重连成功后会继续记录,不影响视频录制。
- 没有视频流时只清不存:如果录制任务结束时实际没有拉到视频流(例如主播开了直播间但没推流),本次收集到的弹幕会被直接丢弃,不会生成对着不存在视频的"孤儿"弹幕文件。
- 新版礼物消息兼容:B 站 2026 年起灰度推送的
SEND_GIFT_V2(protobuf 格式)礼物消息,DDTV 会自动解码并映射成旧版礼物格式记录,无需任何设置。 - 弹幕屏蔽列表同样生效:配置项
BlockBarrageList(配置文件./Config/DDTV_Config.ini,默认值:空,多个关键词用|分隔)中命中的弹幕和礼物名不会被记录进文件。 - 弹幕文件只在录制段落结束时(下播、切割、取消录制)落盘保存,录制过程中存在于内存里;极端情况下(如直接 kill 进程)可能丢失未保存的部分。