Skip to content

fix(playback): 修复 MP4 与加密 HLS 分片的格式误判 - #3

Open
CaiJingLong wants to merge 2 commits into
zhoufuweigg:mainfrom
CaiJingLong:fix/media-format-detection
Open

CaiJingLong wants to merge 2 commits into
zhoufuweigg:mainfrom
CaiJingLong:fix/media-format-detection

Conversation

@CaiJingLong

Copy link
Copy Markdown

视频地址的签名参数偶然包含 hLS 或 m3u8 时,Go 播放代理会将 MP4 当作 HLS 播放列表,读取超过 4 MB 后返回 502。加密 HLS 会话的普通分片也可能因为会话持有密钥而被误判。

本次改为依据明确的媒体信息、URL 路径后缀、响应 Content-Type 和播放列表内容判断格式,保留无扩展名 HLS 的内容探测。新增大于 4 MB 的合成 MP4 测试,覆盖查询参数和目录名称中的误导性字符串;不涉及 macOS 工程或播放器 UI。

验证:

  • 新增用例在修复前失败、修复后通过。
  • 默认站源版和全站源版的播放、下载、HLS、弹幕相关 go test -count=1 -race 检查通过。
  • 原故障剧集同一集从 502 恢复为 MP4 206 响应,媒体探测及携带解密参数的前三帧解码通过;未请求站源图片。
  • 新增独立 GitHub Actions 工作流,对两种站源版本执行阻断式核心回归;actionlint 检查通过。

全项目目录与 UI 回归仍有待处理项,此 PR 不声称全量验收通过。macOS 支持将通过另一个独立分支和 Draft PR 提交。

原因:
- 签名参数偶然包含 hls 或 m3u8 时,MP4 被按播放列表读取并返回 502
- 加密 HLS 会话中的普通分片也会被错误按播放列表解析

改动:
- 按明确的格式信息、路径后缀和响应内容识别播放列表
- 增加大于 4 MB 的合成 MP4 回归用例,覆盖签名参数和路径中的误导性字符串
- 在 CI 中为两种站源版本增加阻断式播放与下载核心回归检查

影响:
- 修复共享 Go 核心的媒体代理判断,不依赖 macOS 适配
- 两种站源版本的相关 race 测试通过;真实故障剧集取流及前三帧解码通过
原因:
- 新 fork 尚未注册可手动调度的播放工作流

改动:
- 将 fix 分支推送纳入两种站源版本的回归触发范围

影响:
- 推送即可观察独立修复的检查结果,不涉及应用打包或发布
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant