Skip to content

QuickLook-Next 5.0.9

Choose a tag to compare

@Adstrax Adstrax released this 19 Sep 02:31
· 0 commits to lite since this release

修复:打不开的视频会让整个应用崩溃

预览一个"媒体播放器打不开"的视频(损坏文件、0 字节文件、缺少解码器的容器)时,以前是整个 QuickLook 直接退出,而不是提示"这个视频打不开"。

原因很具体:视频插件的失败回调 MediaFailed 是播放器在自己的工作线程上抛出来的,而它开头两行就直接去改界面元素(清空缩略图)。从非 UI 线程碰界面会抛异常,这个异常落在没有捕获的工作线程上,进程就没了。

现在所有界面操作都在窗口的 UI 线程上执行,用户看到的是一句提示——"无法播放此视频。"——完整异常写进日志(顺便不再把原始堆栈糊在面板上)。

顺带做了一轮视频健壮性回归(22 个样本)

用 ffmpeg 生成了一整套样本,逐个预览并记录:出画面耗时、是否崩溃、是否无响应、是否报错。覆盖:

  • 容器/编码:MP4、MOV、MKV、AVI、WMV、WebM、TS、FLV、OGV;H.264、H.265(8-bit 与 10-bit)、AV1、VP9+Opus、MPEG-2、WMV2+WMA、Theora+Vorbis
  • 变体:4K、6 分钟长视频、竖屏、带旋转元数据、可变帧率、无音轨、纯音频(MP3/M4A)、中文+带空格路径、截断文件、0 字节文件

结果:22/22 全部正常出画面(299–1422 ms,中位数约 350 ms),0 崩溃、0 无响应;两个故意损坏的文件优雅报错并写日志。

也就是说,上游那几类"视频打不开"的报障(#1768、#1844、#1968)在我们这条基于 LAVFilters 的路径上没有复现。

回归工具随仓库(需要 ffmpeg):Scripts\make-video-matrix.ps1 生成样本,Scripts\run-video-matrix.ps1 逐个扫描并写结果;它对"应用被某个样本搞崩"的情况会自动重启实例,所以崩一次不会污染后面的样本。完整记录见 docs/research-video-matrix.md。

冒烟测试也加了守卫:把 test.mp4 截断成 test-corrupt.mp4 再预览,断言进程存活、且确实记录了错误日志(不需要 ffmpeg)。

升级说明

版本号 5.0.9。建议升级——之前遇到"文件坏掉 → 整个 QuickLook 消失"的问题就是这里。自动更新可直接覆盖安装。