Skip to content

SrcBox v1.1.21

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Oct 14:25

v1.1.21 Release Notes

Release Date: 2026-10-16
Previous Version: v1.1.20


Highlights

v1.1.20 请用户复现并附上 mpv 日志,本轮日志拿到了,同时读出了两件事。第一件:诊断本身有缺陷。 用户附上的 mpv-20261016.log 只覆盖 1.6 秒,而他在 4 分钟里点了 6 次播放——因为 logs\mpv-<日期>.log 是所有 mpv 实例共用一个文件名,而打开同名文件会截断它,于是设置页的「测试播放」或录制时长探测一开始写日志,主播放器的日志就被整份丢掉:丢的恰好是"回看起不来"那一段。本版改成每个实例一个文件,并只保留最新的 12 个。第二件:302 不是拒绝。 日志显示这套平台(华为 HWServer 入口)对直播请求同样回 302 Moved Temporarily 并跳转到真正持有资产的节点,FFmpeg 跟随跳转后正常出画;所以上一版把 302 当成"服务端不认这个窗口"的说法是不准确的,本版让探测跟随跳转、报出节点的最终裁决,并在跳转地址丢掉 playseek 时明确标注——那才是会退化成直播(或黑屏)的情形。

另外修掉用户在同一份反馈里报的第二个问题:「设置 → 播放 → 记忆与恢复」三个开关保存后不生效(未勾选状态没有被写回实际设置)。归档起播的自动重试也从 1 次提高到 3 次——用户日志显示同一地址往往要第三次请求才出首帧。

  1. 修复记忆与恢复开关保存不生效:记住上次使用的列表源 / 记住每个列表最后播放的频道 / 记住每个频道选用的源 三个开关在保存时没有被写回实际设置,取消勾选后重启仍然照旧。
  2. mpv 调试日志按实例分文件:logs\mpv-<日期>-<时间>-<实例>-<序号>.log(如 mpv-20261016-112506-main-1.log),主播放器、设置页测试、录制时长探测互不覆盖;同时收敛噪声日志级别,并只保留最新 12 个文件。
  3. RTSP 探测跟随重定向:302 后继续 DESCRIBE 跳转地址,一条主日志就能看到"入口 → 节点"的完整链条与最终裁决;跳转地址缺少 playseek 时输出 [重定向丢弃 playseek]。
  4. 归档起播重试 3 次:回看 / 时移每 max(3, 源超时秒数) 秒无画面就换一个新会话再请求,最多 3 次(约 15 秒),日志逐次记录 第 N/3 次请求。
  5. 「导出日志」改为打包 zip:F1 调试窗口的一次导出会带上播放器日志、调试日志与最新的 4 个 mpv 日志(打包而不是只复制主日志),反馈问题时附这一个文件即可。
  6. 测试:576 个用例,575 通过 / 1 跳过 / 0 失败;新增 9 例(重定向跟随 2 例、记忆开关写回 2 例、mpv 日志文件名与清理 2 例、日志打包 3 例)。

1. 记忆与恢复开关保存不生效(已修)

开关 取消勾选后本应停止的行为
记住上次使用的列表源 启动时不再自动载入上次的列表源
记住每个列表最后播放的频道 切换回某个列表时不再自动续播该列表的频道
记住每个频道选用的源 不再记住手动切换过的线路

三个开关在设置窗口里能正常勾选 / 取消,但保存时只有"表单 → 临时配置"这一半;把配置写回实际设置的那一步漏掉了这三个字段,所以重启后行为不变,重新打开设置页又变回勾选状态——看起来就是"取消不掉"。本版补齐写回,并补了回归用例(表单 → 配置 → 实际设置一条链走通)。

2. mpv 调试日志:一个实例一个文件

logs\mpv-20261016-112506-main-1.log      主播放器
logs\mpv-20261016-113002-test-rtsp-3.log 设置页「RTSP 测试」
logs\mpv-20261016-113015-probe-4.log     录制文件时长探测

文件名含实例标签(main / test-http / test-rtsp / probe / multi / player)与进程内序号,同一秒启动两个实例也不会撞名。同时把 msg-level 收敛为 all=v,vo=warn,vf=warn,af=warn,ao=warn,osd=warn:着色器与滤镜图的调试输出(轻易上百 KB)不再进文件,RTSP / FFmpeg / demuxer 的细节照旧保留。mpv 日志只保留最新 12 个文件,避免长期开调试模式占满磁盘。

反馈播放问题时请附上 logs 目录下最新的 mpv-*.log(主日志标签 main) 与同时间段的 SrcBox-*.log。

3. RTSP 探测跟随重定向

探测不再止步于第一个响应,而是沿 Location 继续问下去(最多 2 跳):

[Replay] RTSP 探测: RTSP/1.0 302 Moved Temporarily (SDP=no, HWServer/1.0) → rtsp://121.31.11.79:554/PLTV/.../x.smil?...&playseek=20261015220000-20261015223600 → RTSP/1.0 200 OK (SDP=yes, HWServer/1.0)

判断方式:

探测结果 含义
末跳 200 OK (SDP=yes) 服务端愿意提供这个 playseek 窗口 → 播不出来是链路 / 解码层面的事
末跳 454 / 404 / 503 服务端不认这个窗口或这个资产(换参数或等运营方)
跳转地址后带 [重定向丢弃 playseek] 跳转目标没有回看参数,按该地址播放会变成直播(或黑屏)——这时需要预解析跳转并在跳转地址上补回参数
只有 302 且没有 Location 入口没有给出节点地址

探测只在调试模式下执行,一条 DESCRIBE 不建立媒体会话。

4. 归档起播重试 3 次

项目 说明
触发条件 回看 / 时移模式下,max(3, 源超时秒数) 秒(默认 5 秒)内仍无画面
动作 用同一地址换一个新会话重新请求,等待窗口重置;日志:[Playback] 归档起播 5.1s 未见画面,第 2/3 次请求 URL=…
次数 一个回看窗口最多 3 个会话(约 15 秒),之后才记录 起播…未见画面
直播 不参与重试:直播有自己的源超时 / 自动降级链路

依据:用户日志里同一条 playseek 地址,第一、二次会话 5 秒不出画,第三次在 1 秒内出首帧——服务端对回看窗口常常只有后面的会话才应答。

5. 「导出日志」打包 zip

F1 调试窗口的「导出日志」不再只复制一份播放器日志,而是把同一次复现需要的文件打包成一个 zip:

内容 说明
SrcBox-YYYYMMDD.log 播放器日志(含 [Replay]、RTSP 探测、起播…未见画面)
SrcBox-YYYYMMDD.debug.log 调试模式下的详细日志(存在时)
mpv-*-<实例>-*.log 最新的 4 个 mpv 日志,其中 -main- 是主播放器

打包读取 mpv 日志时使用共享读,mpv 正在播放、日志文件被占用也能导出。

6. Known Issues

  • 回看能否成功最终取决于服务端:本版把"回看起不来"的取证补齐(完整 mpv 日志 + 跟随跳转的探测结论),若某个源仍不播,请把 logs\mpv-*-main-*.log 与主日志里的 [Replay] 行发到 issue。
  • 「时移」拖动仍旧是按新时间点重新请求回看地址(中转式回看流在播放器内部不可 seek),因此每次拖动都会新建一个会话;服务端会话数受限的源可能出现"拖太快就不出画"。
  • 若 SrcBox 运行在受限完整性级别下(例如程序目录被安全策略或沙箱标记为 Low Integrity、进程被降权),它无法写入用户配置目录、也无法创建用户密钥容器,HTTPS 因此不可用;此时页面与二维码会自动给出 http://。这类限制来自运行环境,不是程序缺陷。
  • 语音词表的识别层热词本版未启用(当前模型不支持热词嵌入);词表包仍作用于指令解析层。
  • 浅色主题下全屏 EPG 浮窗的最外圈存在 1 个设备像素的浅灰边(约 #AAAAAA),深色主题下为 #707070;本版未处理。

Contributors

感谢以下用户的贡献:

  • @bnnz1085199 - 提供广西联通 RTSP 单播回看的第二份日志(SrcBox + mpv 双日志),既定位到"mpv 日志被其他实例截断"的诊断缺陷,也报告了「记忆与恢复」开关保存不生效的问题 (#6)
  • @Neverends4 - 报告重庆联通 RTSP 单播源缺少回看 / 时移格式,并提供频道列表与抓包资料 (#6)

Download