AV1/MP4 视频在 Windows 资源管理器不显示缩略图:一次完整的排查记录
机器上有一批 AV1 编码的 MP4 视频(ffprobe 显示 Video: av1 (Main) (av01), yuv420p, 1280x720 ),播放完全正常——毕竟 AV1 Video Extension 早就装好了。但资源管理器里这些文件的缩略图死活出不来,只有一张通用的播放器图标。
第一反应是"解码器没装"。查了一圈发现事情没那么简单,于是有了这篇排查记录。
第一步:排除解码器本身
先确认解码链路。用 PowerShell 查 Appx 包:
Get-AppxPackage -Name "*AV1*"结果:
- Microsoft.AV1VideoExtension 2.0.7.0 ,Status: Ok,Store 签名,非部分暂存
- VP9、WebMedia、HEVC 扩展全部就位
- 系统是 Windows 11 22H2(Build 22621.4317,中国版)
再查 .mp4 的缩略图处理器:
HKCR\.mp4\ShellEx\{e357fccd-a995-4576-b01f-234630154e96}
→ {9DBD2C50-62AD-11D0-B806-00C04FD706EC} # Windows 默认的 Media Foundation 抽帧解码器没问题,问题出在缩略图生成链路:Windows 内置的视频抽帧走 Media Foundation,对 AV1 的支持一直不上不下;更麻烦的是,Explorer 会把"提取失败"的结果按路径缓存下来,之后装好解码器它也不会自动重试。缓存文件的时间戳印证了这一点—— thumbcache_1280.db 的修改时间正是刚才反复刷新文件夹的时刻。
第二步:装 Icaros
缩略图这类问题,Icaros 是绕不开的名字——它用 FFmpeg 抽帧,格式覆盖面远大于系统内置方案,还自带黑白帧检测(开头是黑帧的视频会自动往后跳几帧取画面)。
然后下载环节先栽了个跟头:
- GitHub 直连下载,跑了两分钟被超时杀掉,进度 22%;
- 改成断点续传重试,GitHub 直接甩回
curl: (52) Empty reply from server; - 切到
ghproxy.net镜像 + 断点续传 + 循环重试,文件一路涨到 4MB……又停了; - 最后索性手动下载装完,收工。
安装包校验值: sha256 18854b44...81d47a ,版本 v3.3.6(2026-06 更新,顺带支持了动态 WEBP 缩略图)。
第三步:装完 ≠ 生效
装完 Icaros 后第一件事是验证注册状态,结果发现两个坑:
坑一:COM 组件压根没注册。 扫了一遍 HKCR\CLSID ,HKLM 和 HKCU 里都没有任何指向 IcarosThumbnailProvider.dll 的注册项, .mp4 的 ShellEx 键也还指向系统默认处理器。安装程序只是把文件解到了磁盘上。
坑二:我想代劳,但被安全策略拦住了。 脚本环境里 reg.exe 在程序黑名单里直接被拒; Start-Process -Verb RunAs 提权被拦; regsvr32.exe /s 也被拦——理由是"已知 LOLBin,可在验证体系之外执行任意代码"。沙箱把所有能提权注册 COM 的路都堵死了,注册这一步只能人工完成:管理员身份运行 IcarosConfig.exe ,点一下激活面板里的 THUMBNAILING,状态变为 ACTIVATED。
再验证, {c5aec3ec-e812-4677-a9a7-4fee1f9aa000} 出现了,指向 D:\Program Files\Icaros\64-bit\IcarosThumbnailProvider.dll 。注册成功。
第四步:注册成功 ≠ 接管 mp4
重新查 .mp4 的 ShellEx 键,还是那个熟悉的 {9DBD2C50-...} —— Icaros 的默认激活预设根本不含 mp4 。看看 HKLM\Software\Icaros 里的扩展列表:
ape;cb7;cbr;cbz;divx;epub;flac;flv;mk3d;mka;mkv;mpc;mxf;ofr;ofs;
ogg;ogm;ogv;opus;rm;rmvb;spx;tak;tta;wav;webm;wv;xvid;psdmkv、flv、rmvb 都有,唯独没有最常用的 mp4——大概微软默认方案覆盖的格式,Icaros 就不越俎代庖了。但对 AV1 mp4 来说,默认方案恰恰是失效的那个。
补两个键:
# 扩展列表追加 mp4
Set-ItemProperty "HKLM:\Software\Icaros" -Name "Thumbnail Extensions" `
-Value "....原列表...;mp4"
# 把 .mp4 的缩略图处理器指向 Icaros
# 写 HKCU\Software\Classes 即可生效(HKCR 会把 HKCU 合并到 HKLM 之上),不需要管理员
New-Item "HKCU:\Software\Classes\.mp4\ShellEx\{e357fccd-a995-4576-b01f-234630154e96}" -Force
Set-ItemProperty 上述路径 -Name "(default)" -Value "{c5aec3ec-e812-4677-a9a7-4fee1f9aa000}"验证: HKCR\.mp4\ShellEx\{e357fccd-...} 已生效返回 Icaros 的 CLSID。
第五步:清缓存,重启 Explorer
失败的缩略图早就被 Windows 缓存住了,不清理它不会重试。Explorer 会锁住缓存文件,所以顺序是:杀掉 explorer → 删掉 %LocalAppData%\Microsoft\Windows\Explorer\thumbcache_*.db → 重启 explorer。屏幕闪一下,任务栏重建,属于正常现象。
刷新文件夹,AV1 的 mp4 缩略图出来了。首次抽帧稍慢(FFmpeg 解码),之后走缓存就是秒出。
复盘:问题一共叠了四层
- 解码器层 :AV1 Video Extension 装没装、状态是否 Ok——这一层是好的,最容易误导排查方向;
- 缩略图处理器层 :Windows 内置 MF 抽帧对 AV1 不可靠,需要 Icaros 这类第三方接管;
- 注册层 :Icaros 手动安装后 COM 未注册、激活预设不含 mp4,两处都要手工补;
- 缓存层 :Explorer 缓存了失败结果,最后必须清
thumbcache_*.db并重启 Explorer 才会重新抽帧。
排查过程中还有个环境层面的插曲:脚本会话的 PowerShell 输出经常被吞掉,所有诊断都只能先 Out-File 落盘再读文件,算是给这次排查增添了一点额外的仪式感。
四层问题叠在一起,每一层单独看都"应该没问题",合起来就是缩略图死活不出来。这也是 Windows Shell 扩展问题的一贯风格:真正的原因永远在你看不到的注册表深处。






