更新日志
unreleased
录制
停止应用时录像可以正常收尾
停止 rust-srec —— Ctrl+C、
docker compose down、重启容器或关机 —— 可能会让录像半途中断:录制程序有时会在写完文件之前就被结束,导致最后一段被截断、没有出现在场次的文件列表里,或者缺少对应的弹幕文件。现在关闭时会先停止接受新任务,等已经在录的内容收尾并保存完毕,然后才真正退出。录制程序现在也与应用本身绑定,应用退出后不会再有残留进程。关闭过程一定会在限定时间内结束
以前某个无法收尾的录像可能会让关闭过程一直挂着。现在有了期限(默认 30 秒),到时仍未结束的工作会被终止,应用照常退出。如果你的录像通常需要更长时间收尾,可以调大
RUST_SREC_SHUTDOWN_TIMEOUT_SECS;Docker Compose 文件中也配了对应的stop_grace_period,好让 Docker 等待应用而不是先把它杀掉。若关闭超出了宽限期但仍完整保存了全部内容,则按正常退出处理。参见配置。中断的关闭会在下次启动时提示
如果应用是被强行结束的,或者没能在限定时间内完成收尾,这一情况会被记录下来并在下次启动时提示,让中断的录像可见,而不是悄无声息地留下残缺文件。
保存失败不再终止正在进行的录像
以前只要录像的某一段写入数据库失败,整场录像就会停止。现在录像会继续,失败会被单独报告。
修复 FFmpeg 分段录制的 Unicode 文件名问题
FFmpeg 录制与后处理不再把整个子进程强制设为
Clocale。该覆盖在 Windows 上可能导致 Unicode 输出路径无法打开,尤其会影响分段模式中通过strftime展开的文件名。消息和数字格式仍保持稳定以供进度解析,而字符与时间处理会保留父进程的 UTF-8 locale。主播在监控意外失败后仍会被继续监控
以前主播的监控一旦遇到意外的内部错误,就会悄无声息地停下来,直到重启 rust-srec 才恢复,期间的开播都不会被录到。现在监控会自动重新启动。快速禁用再重新启用某个主播,也不会再出现重复监控或彻底失去监控的情况。
为单个主播保存的登录不再丢失
扫码为单个主播登录 B 站后,该账号只保留到下一次改动这个主播为止:重命名、启用或停用、调整优先级,或把它加入批量操作,都会让该主播重新变回未登录状态,之后的录制也不再使用该账号。为单个主播续期的登录也是如此——无论是自动续期、手动点击刷新,还是平台在开播检测时新发放的会话,都会被丢弃。现在这些登录都会被保留。
磁盘写满时会直接告警,而不是让每场录像悄悄失败
以前录制途中磁盘写满,内置录制器只会把它当成一场出错的录像并算到该主播头上,而其他主播仍会一个接一个地以同样的方式开始并失败。现在磁盘空间不足会被正确识别:你会收到"输出路径无法写入"通知,录制会暂停,空间释放后 30 秒内自动恢复。
删除主播不再清空录制历史
以前删除一个主播,会连同它录过的所有场次一并抹掉,附带的文件列表、分段和弹幕统计也一起消失——录像文件其实还在磁盘上,但在应用里再也找不到。现在主播被删除后,过往场次仍会保留在列表中,并沿用录制时的名称显示;如果当时还有正在录制的场次,也会被正常结束,而不是一直显示为直播中。
API 与集成
支持通过 API 密钥进行程序化访问
现在可以创建长期的 API 密钥,作为短期 JWT 会话令牌之外的另一种认证凭据。密钥归属于创建它的用户,支持设置可选的过期时间,并可配置两种权限级别:
read_only(只读权限,仅允许查询录制会话、弹幕、聚合统计、通知事件及系统健康状态等非敏感信息)与full(完全权限,可执行包括修改配置在内的所有操作)。服务端仅存储密钥的 SHA-256 哈希值,原始密钥仅在创建时展示一次。吊销密钥会立即在服务端生效并清除认证缓存。API 密钥无法用于管理其他密钥或修改密码;WebSocket 媒体与下载流继续要求使用 JWT 令牌,避免密钥出现在 URL 或访问日志中。详见 API 密钥与 MCP。内置 Model Context Protocol (MCP) 服务器
后端在
/api/mcp端点内置了基于 streamable HTTP 传输协议的 MCP 服务器。Claude Code、Claude Desktop、Cursor 等 AI 助手可以通过 API 密钥直接接入,执行查询录制会话、分析弹幕活跃度与词频、按字节分页读取原始弹幕 XML、监控流水线任务、管理主播及更新系统配置等操作。所有 MCP 工具均在后端进程内直接调用对应服务,保持一致的数据校验与热更新能力。只读密钥被严格限制在安全查询工具内,无法读取任何配置或已存凭据。详见 API 密钥与 MCP。Web 界面提供独立的 API 密钥管理
在 设置 → API 密钥 页面中,可以便捷地创建、查看与吊销具有自定义名称和有效期的 API 密钥。页面还提供一键复制适用于 Claude Code、Cursor 及标准 MCP 客户端的配置片段。
登录失败过多会被限速
密码不再可以无限次数地猜。同一账号连续五次登录失败后会进入一段冷却时间而被拒绝,返回内容会告知需要等待多少秒。登录成功会立即清零计数,提示信息也不会透露用户名是否存在。另有一个宽松得多的配额限制单个来源能消耗多少密码校验开销;需要注意的是,在反向代理(包括 rust-srec 自带的前端)之后,所有登录看起来都来自代理,因此该配额是在保护服务器,而不是区分不同用户。密码校验现在也会排队执行,大量登录请求不再拖慢应用的其他功能。两个配额均可通过
API_LOGIN_MAX_FAILURES、API_LOGIN_IP_MAX_FAILURES和API_LOGIN_WINDOW_SECS调整。详见配置。关闭登录时收紧了浏览器访问范围
在不需要登录的本地开发模式下,后端以前会接受任意网站发来的浏览器请求。现在,来自未知页面的请求,以及使用本机地址之外的网址访问的请求,都会被拒绝,同一浏览器里的其他标签页无法再悄悄向录制程序发指令。本地 Web 界面、桌面端以及
curl之类的工具不受影响。如果你从其他地址打开界面,请在新增的API_CORS_ORIGINS选项中列出它。开启登录时行为不变——此时保护 API 的是密码或 API 密钥。详见配置。使用
DELETE /api/pipeline/{pipeline_id}取消管道现在会真正结束它该请求只会停止管道中的步骤,管道本身却一直显示为处理中:无法重试,重启后依旧如此,对应录像的后处理也永远走不完。现在它会一并结束整个管道,可以重试,录像也能继续。只有直接调用该请求的脚本和集成受此影响——Web 界面上的取消按钮使用的是另一个请求,一直都是正常的。
管道与上传
支持把录像上传到百度网盘
新增
baidupcs管道处理器,通过 BaiduPCS-Go 命令行工具把录像上传到百度网盘,Docker 镜像已内置该工具。像其他上传步骤一样加进管道即可:目标文件夹支持主播、标题、日期等占位符,同名文件可以跳过或覆盖,上传的实时进度、逐文件记录和主播卡片上的上传状态与 rclone 完全一致。登录直接在预设编辑器里完成——粘贴一次网盘 Cookie(或 BDUSS 和 STOKEN),账号卡片就会显示当前账号和剩余空间。勾选记住凭据以便自动重新登录后,登录会话过期时上传任务会自行重新登录,半夜录完的直播照样能上传进网盘;不勾选则凭据只交给 BaiduPCS-Go,应用本身不保存。如果记住的凭据本身失效了,会收到一条提醒通知,后续尝试也会暂停一小时,不会反复请求百度。退出登录会一并清除记住的凭据。由于 BaiduPCS-Go 的退出码无法反映上传结果,rust-srec 会解析它的逐文件输出来判定成败,重试任务时只重传没有成功的文件。详见 DAG 管道。崩溃后的后处理不再卡住或重复执行
如果应用意外停止——崩溃、主机重启、容器在任务执行途中被结束——某场录像的后处理可能停在一半:剩余步骤再也不会启动,场次一直显示为处理中且无法重试;与此同时,刚刚完成的步骤可能在下次启动时再执行一遍,把已经上传过的文件重新上传,并重新执行其后的移动或删除步骤。现在后处理会从中断的地方继续,已经完成的步骤不会重复执行。
无法执行的管道步骤不再拖住整场录像
如果某个步骤指定了并不存在的处理器,它会被正常保存并排入队列,然后永远不会被取走执行——管道一直停在"处理中",对应录像的后处理永远走不完,卡住的任务还会一直计入队列长度,最终导致应用限制自己的录制。内置的 创建 ZIP 压缩包 预设,以及在预设编辑器里创建的压缩类预设,都属于这种情况:它们指定的处理器名称是工作线程无法识别的。现在这些预设可以正常执行了。若管道仍然指定了未知的处理器,保存时就会被拒绝,并列出可用的处理器;此版本之前已经卡住的任务会在启动时置为失败,让等待它们的录像得以继续。
管道任务开始、完成与失败的通知现在会送达
订阅 管道开始、管道完成 或 管道失败 后收不到任何消息:转码或上传失败也不会有通知发出。现在这些通知会随任务执行正常触发。
删除管道执行记录会一并停止其正在进行的工作
删除仍在运行的管道只会把它从列表中移除,任务却还在后台继续——转码或上传照常进行,而对应录像会一直等待一个已经不存在的管道。现在删除会先取消正在进行的工作。
排队的任务按先进先出执行
当排队的任务多于工作线程的处理能力时,每次都会优先取走最新加入的任务,较早的任务可能被无限期地跳过,新录像不断插队。现在同优先级的任务按入队顺序执行;优先级更高的仍然优先。
转码不再删除自己刚生成的文件
开启"成功后删除输入文件"时,如果输出实际上和输入是同一个文件——例如通过符号链接的目录访问,或在 macOS 与 Windows 上仅大小写不同——该步骤会先用转码结果覆盖原录像,随后又把它删除,两者都会丢失。现在步骤会识别出输入与输出是同一个文件并予以保留。
移动步骤不再为并未移动的文件报告成功
移动步骤发现源文件不存在时,只要目标文件夹里存在同名文件,就会被当作"此前已经移动完成"的证据,并把这个无关的文件传给后续步骤。现在该续传逻辑只在其本来适用的场景生效:重试的任务,或崩溃后重新执行的任务。
工作流的输出以固定顺序传给下一个步骤
位于工作流之后的步骤,每次运行收到的工作流输出顺序都不相同,这会改变合并类步骤(如拼接)的结果。现在顺序按工作流定义的顺序传递。
关闭应用时不再被耗时的后处理任务拖住
关闭时仍在执行的转码或上传会让应用一直等到关闭期限耗尽、所有工作被强行终止,并被记为非正常退出。短任务仍然会得到完成并记录结果的时间;耗时较长的任务现在会被提前要求停止,让应用正常退出,该任务会在下次启动时从头执行。
从未启动的后处理现在会被补上
如果应用恰好在录像结束、后处理尚未建立的那一刻停止,或者建立过程本身失败了,这部分工作就彻底丢失了:配置为录制结束后运行的上传、转码等步骤根本没有执行,而且没有任何提示。现在启动时会发现这类应当执行却从未开始的后处理并将其启动,无论应用停了多久都能补上,整场录像和单独某一段录像都适用。此版本之前就已完成的录像不受影响,因此升级(或首次开启后处理)不会追溯地对已经录好的全部内容执行一遍。
可以一次选中多个管道批量操作
清理已经跑完的管道只能逐个打开卡片菜单、逐个确认。管道任务页面现在有了选择按钮:勾选需要处理的管道,即可一次性取消、重试或删除。重试和取消只会作用于状态允许的那些管道,按钮上会显示本次会影响其中多少个;删除则对任意状态都有效,仍在运行的会先被取消。如果批量操作中有一部分没有成功,只有这些管道会保持选中,方便你单独重试。
可以在媒体产物页面删除录制文件
媒体产物此前只能浏览,想腾出空间就得自己去磁盘上找文件,而且删完之后也没有办法清理残留的记录。现在每个产物都有删除选项,选择按钮还支持一次清理多个。默认只会删除记录、保留磁盘上的文件;如需连同录像文件一起删除,请在确认框中勾选同时从磁盘删除文件。如果文件此前已被你手动删除,删除记录同样可以正常完成,并且无论哪种方式,所属录像的总大小都会被同步修正。
自定义命令步骤不再被特殊文件名影响
以直播标题命名的录像,文件名里可能出现被 Shell 当作指令解释的字符——单引号、双引号、
$、反引号、分号等。运行自定义命令的管道步骤遇到这类文件时会执行失败,甚至会把标题里的一段内容当成命令执行。现在命令里用到的文件路径、标题和主播名会在执行前自动加好引号,只会作为文本传给命令,而不会被当成指令执行——无论是直接作为参数、位于引号内、位于$(...)或反引号中,还是位于 here-document 正文中。你自己写的管道符、&&和重定向依然有效,已经手动给占位符加过引号的写法也照常工作——不需要再额外转义。剩余的两点限制见 DAG 管道。重启后重新排队的任务不再显示过时的进度
如果应用在转码或上传执行途中停止,该任务会在下次启动时重新排队,但进度仍停留在停止前的百分比——一个只是在排队等待的任务可能一直显示"42%",直到它真正重新开始执行。现在任务回到队列的那一刻,旧的进度就会被清除。
大体积录像现在可以打包成 ZIP
超过 4 GB 的录像在打包 ZIP 时会失败:压缩包写到一半就被放弃,最终什么也没有留下。现在任意大小的录像都能正常打包。
弹幕
弹幕录制可以扛过网络中断
以前如果与平台弹幕服务器的连接断开、且几分钟内无法重连,弹幕录制就会在本场直播剩余时间内彻底停止——视频照常录制,但后面的每一段都没有弹幕文件,而且没有任何提示。现在只要录制还在继续,弹幕就会一直尝试重连,网络恢复后自行接上。即使某一段录制期间连接是断开的,这一段仍然会生成自己的弹幕文件,统计也会接着之前的数字继续累加,而不是从零重新开始。持续断开的弹幕连接会在系统健康页面上报出来,不再是静默故障。
弹幕录制失败不再卡住后续处理
弹幕录制意外结束时,该场次的后续处理步骤(上传、转码等所有配置为录制结束后运行的步骤)都不会被启动。现在它们会正常执行。
直播最后的弹幕不再丢失
录制停止时,平台已经发出但仍在队列中的弹幕会被丢弃——最多可达本场最后一百条,统计和最后一个弹幕文件里都没有。现在会在录制收尾前先收完这些弹幕。
弹幕不再跑到下一段录制里
过去分段录制切换时,上一段结尾积压在队列里的弹幕会跑到新的一段开头;现在已修正逻辑,这批弹幕会正常留在上一段。
弹幕文件不再残缺
因连接故障结束的弹幕录制会留下一个未正常收尾、也未登记的文件,它既不会出现在场次的文件列表里,也无法被弹幕转换步骤使用。现在文件会被正常收尾并像其他文件一样登记;如果某段录制因体积过小被丢弃,对应的弹幕也会一并从场次文件列表中移除。
弹幕统计可按主播配置
弹幕活跃度的汇总方式不再固定。全局配置新增弹幕统计分区,平台、模板和主播三层均可覆盖:可设置排名的发言人和高频词数量、活跃度时间线的精度、计数转为估算值前跟踪的不同发言人数,以及高频词图表中额外忽略的词。也可以完全关闭统计而仍然录制弹幕文件,从而不保存观众昵称。详见配置。
高频词计数不再虚高
在弹幕密集的直播中,高频词图表可能给出远高于真实值的计数——只出现过几次的词可能显示为上千次,图表下半部分则被数值几乎相同的无关词占满。现在计数是准确的,仍属估算的条目会用
≈标注。活跃度图表的速率此前高了六倍
时间线及其峰值、均值都标注为"每分钟",但实际统计的是每 10 秒一个区间,因此三个数字都约为真实速率的六倍;超长直播由于自动降低精度,误差更大。现在显示的是真实的每分钟速率。均值也改为按整场直播计算,而不是只统计有弹幕的时刻;安静时段会以零值绘制,而不是按前后速率连成直线。
录制中途重启后统计不再归零
如果录制过程中应用重启,该场次的弹幕统计会从零重新开始,并用更小的数字覆盖已保存的结果。现在会接着之前的进度继续累加。
场次页面显示更多信息
弹幕面板新增每分钟平均弹幕数;收到过礼物的直播还会显示总数中弹幕与礼物各占多少。
录制过程中即可查看弹幕统计
弹幕统计不再等到直播结束才出现:录制进行时,大约每分钟保存一次统计快照,会话页面的弹幕面板(总数、活跃度时间线、活跃用户、高频词)在直播还在进行时就会逐步填充。如果录制中途程序崩溃或主机重启,最多只丢失最后一分钟的统计,而不是整场。
超长直播的活跃度时间线覆盖全场
弹幕活跃度图表过去只保留最近六小时的完整数据,更长的直播会悄悄丢掉最早的数据点。现在达到上限时会把图表分辨率减半,因此 12 小时的录制也能从第一分钟画到最后一分钟,只是粒度更粗。
活跃用户榜可展开
会话页面的活跃用户卡片默认显示最活跃的 6 位,可以展开查看完整排名,展开后的列表支持滚动。排名人数可配置,默认 100 位。
中日文弹幕现在能切分成真正的词
高频词统计此前只按标点、符号和表情切分。中文和日文书写时不使用空格,因此没有标点的弹幕仍会被整句当成一个"词",图表里满是整句而不是词。现在这两种语言的弹幕会经过真正的分词,并补充了通用词典缺失的常见直播用语,因此
主播今天好厉害啊会计入主播、今天和厉害。其他语言不受影响。新增互动人数指标
会话弹幕面板现在会显示本场有多少不同用户发过言(内存有界的估算值,通常误差在 2% 以内),与弹幕总数并列展示。此版本之前录制的场次显示为 "—"。
新增礼物排行
对于在弹幕流中上报礼物的平台(Bilibili、斗鱼、Bigo、SOOP 等),会话页面新增两张图表:送礼排行与热门礼物,均按礼物件数而非消息条数统计。只有当场收到过礼物时才会显示。
移除
danmu_sampling_config配置项这个模板/主播配置项从未产生过任何效果——统计一直是逐条计数的。该字段已从 REST API(
/api/templates)和数据库中移除;现有配置会自动清理,包含该字段的旧导出文件仍可正常导入。
Web 界面
链接有问题时不再让整个列表页变成报错
录像、主播、处理任务、工作流、预设、媒体文件和播放器都会把你的搜索词、筛选条件和页码记在网址里。以前只要其中任何一项无法被页面识别——比如手动改过的网址、被截断的链接,或是更新后筛选条件取值发生变化的旧链接——整个页面就会变成「出错了!」以及一大段技术细节。现在无法识别的取值会被直接忽略,网址里其余部分照常生效:一个既带搜索词又带无效页码的链接,现在会正常执行搜索并从第一页开始显示。
媒体文件页面终于看得清了
以前媒体文件页面上的卡片不论内容是什么都挤成同一个样子,较长的录像文件名只能显示两三个字。现在每个文件都会先用带颜色的图标标明它到底是什么——录像、音频、缩略图还是弹幕文件,随后单独一行显示完整文件名,下面再显示它所在的目录。文件大小和所属场次放在卡片底部。仍然放不下的文件名会以省略号结尾,鼠标悬停即可看到完整内容。
媒体文件类型已汉化,并可筛选整个文件库
列表上方的类型按钮以前直接显示内部名称
VIDEO、THUMBNAIL和DANMU_XML,在任何语言下都不翻译;而且这些按钮只根据你当前所在的那一页生成,因此翻页时按钮会变,点击后也只能筛选当前页。现在它们会按你的语言显示为视频、音频、缩略图和弹幕,并各自标注整个文件库中该类型的文件数量;点击后筛选的是全部文件,而不只是当前页。搜索框旁边的文件数量和总大小也会随所选类型和搜索条件变化,不再只是把当前屏幕上的内容加起来。可以直接查看磁盘剩余空间
以前系统健康页面对存储只显示「健康」,在空间真正不足之前无法判断该不该清理。现在新增了存储板块,会为每一块写入录像的磁盘显示剩余空间、已用比例,以及一条随占用升高由绿转黄再转红的进度条。磁盘来自你配置的输出目录,包括主播、模板和平台级别的单独设置,因此第二块硬盘同样会被统计;位于同一块磁盘上的目录会合并显示。仪表盘的磁盘卡片也改为直接显示最满的那块磁盘的剩余空间,而不再只是一个状态词。
场次时间线不再隐藏能够识别的事件
以前只要某条生命周期记录的详细信息缺失或无法读取,它就会被显示为无法识别的事件。现在,能够识别的记录(场次开始或结束)会正常显示其名称,并注明详细信息不可用。
侧边栏新增用户菜单
用户账户相关操作已整合至侧边栏底部的用户菜单浮层中。现在可以在任意页面一键前往 API 密钥管理、账户设置、修改密码或退出登录。
工作流步骤不再显示错误的预设
打开使用预设的步骤时,可能会显示另一个预设的设置;此时点击分离并编辑,该步骤就会被替换成所显示的那个预设——上传或转码步骤可能因此悄悄变成删除步骤。现在步骤始终显示它所指定的预设;如果该预设已被重命名或删除,会直接给出提示,而不再退回到无关的预设。
服务端短暂异常不会再把你踢下线
以前只要在浏览器续期登录状态的那一刻服务端正在重启、暂时连不上或返回了错误,你就会被退回登录页并需要重新输入密码;重启或升级期间只要开着页面的人都会遇到这种情况。现在,除非登录状态确实已经过期,其他任何原因导致的续期失败都不会让你退出登录,稍后会自动重试。
安全
Cookie、令牌与密码不再写入日志
开始录制、保存平台、模板或主播配置,以及后台自动检查平台 Cookie 是否过期的过程,此前都会把凭据本身写进日志文件、实时日志视图和浏览器控制台。任何能读到日志文件、日志导出或容器日志的人,都能从中找出平台账号的 Cookie、刷新令牌和账号密码。现在日志只记录改动了哪些配置项,不再记录它们的值。已有的日志文件不会被自动清理,如果你此前把日志分享给过别人,请更换其中出现过的 Cookie 和密码。
部署
通过 HTTPS 反向代理访问时,登录 Cookie 会自动受到保护
当 Web 界面通过终止 HTTPS 的反向代理对外发布时,保存登录状态的 Cookie 以前只有在手动设置
COOKIE_SECURE=true之后才会被标记为仅 HTTPS,否则浏览器在普通 HTTP 请求中也会发送它。现在反向代理报告的协议能够原样传递给应用,Cookie 会自动带上仅 HTTPS 标记。家庭或办公网络内的纯 HTTP 部署不受影响,COOKIE_SECURE也仍然可以在两个方向上覆盖自动判断。如果生产环境仍在通过普通 HTTP 访问,会记录一条提示警告(仅记录一次)。可选的容器自动更新
Docker Compose 文件新增了可选的
watchtower服务(docker compose --profile autoupdate up -d),可自动拉取新镜像并重启容器——但只在系统空闲时进行。新增的免认证GET /api/health/idle端点会报告当前是否有录制、排队录制或执行中的管道任务(上传、remux、弹幕转换等);只要处于忙碌状态,更新就会推迟到下一次检查,因此重启不会打断任何录制或上传。自动更新要求使用可变镜像标签(VERSION=latest)。详见升级与回滚。
安装
自适应语言的
install.sh安装脚本install.sh引导脚本现在会自动根据系统语言(或SREC_LANG环境变量)分发至对应的中文或英文交互式安装流程。脚本在执行前会校验下载内容的合法性,避免在网络代理或认证门户劫持时意外执行错误页面,并在无法安全生成随机密钥时主动终止安装。从源码构建现在需要 Node.js 26
Web 界面与文档站点现已使用 Node.js 26 构建。如果你从源码构建 rust-srec,请在运行前端之前升级 Node——仓库现已提供
.nvmrc,版本管理器会自动选择正确的版本。Docker 与预编译二进制安装方式不受影响。仓库自带的 systemd 服务文件可以正常启动录制程序
用仓库里的
rust-srec.service把 rust-srec 装成系统服务是跑不起来的:服务启动后立刻因权限错误退出,根本没能连上数据库,而且它需要的目录还得自己先手动创建。现在该文件会把日志写入/var/log/rust-srec,由 systemd 在每次启动时创建并接管/var/lib/rust-srec与/var/log/rust-srec,并从/etc/rust-srec/rust-srec.env读取JWT_SECRET等机密信息。停止服务时也会留出足够的时间让正在进行的录像保存完毕;原先固定的内存与 CPU 上限改为可选,不会再在不合适的机器上把录像中途掐断;文件开头还列出了安装所需的命令。首次启动后,请在 Web 界面里设置录制目录:内置的默认值指向 Docker 镜像内部的路径,因此以系统服务方式运行时,不改就录不下任何内容。以该服务方式录制的文件仅rust-srec账号及其用户组可读,如果还有其他账号需要访问(文件服务器、媒体库扫描等),请把它加入该用户组。Docker 安装方式不受影响。
桌面端
关闭应用时会先让录像收尾
在录制过程中退出桌面端,可能会让录制程序残留在后台,或者让文件被截断。现在应用会先等录像保存完毕再退出,最长等待一分钟。
同一个录制数据库只允许一个实例使用
桌面端和单独运行的 rust-srec 服务端此前可能同时打开同一个数据库,彼此都不知情,从而把同一批主播重复录制一遍。现在后启动的一方会直接退出。
修复首次启动时的 SQLite 锁定问题
桌面端现在会在打开读写连接池之前,通过专用的引导连接预先确立 SQLite WAL 模式。此前,两个连接池的并发初始化在初次创建数据库文件时可能会因竞争专属锁而触发瞬态的
SQLITE_BUSY错误,因为 SQLite 切换日志模式所需的专属锁无法通过 busy timeout 等待。连接池在后续扩容新连接时也不会再重复执行该日志模式指令。启动故障恢复与安全模式界面
当桌面端遇到无法自动恢复的启动错误(如数据库被占用锁定、权限不足、磁盘空间不足或数据库损坏)时,现在会展示专用的安全模式恢复界面,而不会直接静默崩溃或卡死。该界面清晰标注故障阶段与错误类型,提供针对性的排查建议,支持一键打开数据目录与日志文件夹,并可一键复制完整的诊断日志。