记录一下录播整理与磁带写入
有群友问我的录播文件是怎么整理、怎么写入磁带的,所以就有了这篇文章。
这篇不是完整教程,主要是记录我现在自己的流程:录播姬按固定模板生成文件,脚本定期把录播整理到完成目录,然后需要写带的时候,再从完成目录里挑一批写进磁带。

录播文件整理
整理前,我的录播文件结构基本固定。先说文件名规则,再说脚本怎么处理。
文件名模板
目录结构大概是这样:
{用户名}/{开播时间(一般情况这个时间在同一场直播内是固定的不变的)(年月日-时分秒)}【{用户名}】/{录制时间(这个时间是防止分段冲突,就是录播文件新建文件的时间)(年月日-时分秒-毫秒)}.flv
录播姬里实际用的是这个模板:
{{name}}/{{ json.room_info.live_start_time | time_zone: 'Asia/Shanghai' | format_date: "yyyyMMdd-HHmmss" }}_{{ title }}【{{ name }}】/{{ "now" | time_zone: 'Asia/Shanghai' | format_date: "yyyyMMdd-HHmmss-fff" }}_{{ title }}.flv
文件结构示例
正常录出来大概长这样:
古守血遊official\20260417-200138_ෆ终末地ෆ【古守血遊official】\20260417-200154-504_ෆ终末地ෆ.cover.jpg
古守血遊official\20260417-200138_ෆ终末地ෆ【古守血遊official】\20260417-200154-504_ෆ终末地ෆ.flv
古守血遊official\20260417-200138_ෆ终末地ෆ【古守血遊official】\20260417-200154-504_ෆ终末地ෆ.xml
眞白花音_Official\20260417-210111_白菜来啦【眞白花音_Official】\20260417-210128-517_白菜来啦.cover.jpg
眞白花音_Official\20260417-210111_白菜来啦【眞白花音_Official】\20260417-210128-517_白菜来啦.flv
眞白花音_Official\20260417-210111_白菜来啦【眞白花音_Official】\20260417-210128-517_白菜来啦.xml
紫桃爱音Official\20260415-120003_B限歌回!【紫桃爱音Official】\20260415-120051-974_B限歌回!.cover.jpg
紫桃爱音Official\20260415-120003_B限歌回!【紫桃爱音Official】\20260415-120051-974_B限歌回!.flv
紫桃爱音Official\20260415-120003_B限歌回!【紫桃爱音Official】\20260415-120051-974_B限歌回!.xml
不过实际录出来的文件不一定完全规整,主要有两种情况:
- 有可能会碎,现在很少出现碎了还分多个子文件夹的情况了。
- 因为我开了标题更新就分段,所以同一场直播也可能分成两个子文件夹。
比如同一场直播标题变过,就可能变成这样:
紫桃爱音Official\20260415-120003_B限歌回A!【紫桃爱音Official】\20260415-120051-974_B限歌回!.cover.jpg
紫桃爱音Official\20260415-120003_B限歌回A!【紫桃爱音Official】\20260415-120051-974_B限歌回!.flv
紫桃爱音Official\20260415-120003_B限歌回A!【紫桃爱音Official】\20260415-120051-974_B限歌回!.xml
紫桃爱音Official\20260415-120003_B限歌回B!【紫桃爱音Official】\20260415-130051-974_B限歌回!.cover.jpg
紫桃爱音Official\20260415-120003_B限歌回B!【紫桃爱音Official】\20260415-130051-974_B限歌回!.flv
紫桃爱音Official\20260415-120003_B限歌回B!【紫桃爱音Official】\20260415-130051-974_B限歌回!.xml
脚本整理流程
早期 2022 年录的不多,我就手动整理。后期实在烦了,就写了个脚本,定期整理录播:
https://github.com/jkfujr/StreamRecorderOptimize
这个脚本主要做这几件事:
- 定时任务启动。
- 扫描我指定的录播目录
REC_PATHS。 - 对比录播状态,跳过正在录制的直播间。
- 把已经结束的录播移动到待处理目录
PENDING_PATHS。 - 在待处理目录里做
l2-l5分析处理。 - 处理完后,把能确认完成的录播移动到
COMPLETE_PATHS。
路径配置在 core/config.py 内:
# 路径配置
self.path_config = {
"REC_PATHS": {
"AAA": r"F:\Video\录播\综合",
"PPP": r"F:\Video\录播\P家",
"TTT": r"F:\Video\录播\测试",
},
"PENDING_PATHS": {
"AAA": r"F:\Video\AAAAAAAAAA",
"PPP": r"F:\Video\PPPPPPPPPP",
"TTT": r"F:\Video\TTTTTTTTTT",
},
"COMPLETE_PATHS": {
"AAA": r"F:\Video\AAAAAAAAAA\综合",
"PPP": r"F:\Video\PPPPPPPPPP\P家",
"TTT": r"F:\Video\PPPPPPPPPP\测试",
}
}
脚本会先遍历所有录播文件夹的名称,也就是 用户名/{{name}} 这一层。

然后去录播状态里对比,跳过正在录制的直播间,把已经结束的录播从录制目录移动到待处理目录 PENDING_PATHS。

移动到待处理目录之后,就在这个目录里做 l2-l5 的分析处理。这部分细节看脚本仓库吧。
最后处理完,如果 用户名/{{name}} 内只剩下一个 {开播时间(一般情况这个时间在同一场直播内是固定的不变的)(年月日-时分秒)}【{用户名}】 子文件夹,就移动到 COMPLETE_PATHS。

如果 用户名/{{name}} 内还有 2 个及以上的子文件夹,就先留着不动。因为有可能规则覆盖不到,一般一天 500G 录播,应该也有 100 来个人,脚本处理完剩下的应该就 5 个左右。
(不过现在剩下的我也懒的去看了,直接手动都拖进去)))
录播文件写入磁带
整理完成后,我会把 COMPLETE_PATHS 里的文件夹移动到 F:\Video\000_写入暂存,等后面统一写入磁带。

这部分我的流程是:
- 把待写入文件移动到写入暂存目录。
- 先处理磁带,也就是擦带。
- 按磁带容量筛选本次要写入的文件。
- 格式化磁带。
- 把文件拖进
LTFSCopy,开始写入。
擦带
写入前先处理磁带。我这里会先擦带,主要是防止买来的磁带太脏,直接格式化使用高错误率。顺便也能验证这个磁带有没有什么奇怪的问题,防止直接格式化写到一半断带之类的,虽然我一次没遇见。

绿色方框的地方就是我常用的擦带功能。2 是擦两次,erase 是开始。
当然,也可以实际全盘写入一遍随机数据,这也算擦带。这个功能在 test tab 内,具体还是问问磁带群群友吧。
这里有个注意点:擦带和写带的机器要分开。一般拿缺容、写入有问题的机器来做擦带机,不要直接拿好机器擦,防止脏磁带损坏好磁头。
准备文件
接着筛选本次要写入的文件。
比如我待写入的文件有 3T,但 L5 只能写 1.44T,那我就先筛选 1.3T 的文件,放入:
F:\Video\000_写入暂存\0x00_写入中(随时删除)

有时候我也不是一次性写满磁带。比如我的录播文件只有 500G 了,那写完后磁带还会剩约 900G。
准备磁带并写入
先格式化磁带。

然后把文件拖入 LTFSCopy。

最后点 写入磁带 按钮。
