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