【发布时间】:2021-01-25 10:00:21
【问题描述】:
Windows Imaging Component 用于解码 heif 图像。但是,成功解码图像需要来自 microsoft 商店的额外应用程序(heif 图像扩展、hevc 视频扩展)。
没有它们,WIC api 将返回空白图像。现在我希望能够以编程方式确定 heif 文件是否可以正确解码。
我尝试使用DXVA Checker 来定位所需解码器类型的存在,它应该是WIC_HEIF_Decoder。但我找不到它在任何地方注册。
有一个 GUID 键,但是 CLSID_WICHeifDecoder 记录了here,我认为即使缺少解码器也可以在系统中注册它。
有人知道怎么做吗?
【问题讨论】:
-
什么是“WIC_HEIF_Decoder”? Microsoft 提供的 HEIF/HEIC guid 是 CLSID_WICHeifDecoder。如果它已注册,则 WIC 可以解码 HEIF/HEIC 图像(但实际上,并非所有 Windows 都安装了它,在这种情况下,它不会被注册)。你到底想做什么?
-
这正是问题之一。在机器上定义了 CLSID_WICHeifDecoder,但缺少实际实现
-
“定义”是什么意思?
-
微软通过添加 HEIC GUID 而不实际安装 h265 图像解码器,在最近的 Windows 10 更新中引入了 HEIC 编解码器混乱。 HEIC 解码器只是关于文件结构,而不是实际的图像解码。用户必须支付 1 美元才能从 Windows Store 下载实际的 h265 编解码器。最简单的解决方案是安装免费的 CopyTrans HEIC WIC 解码器copytrans.net/copytransheic。在页面上不清楚这是 WIC 编解码器,但实际上就是这样。它包含 HEIC 文件格式 + h265 解码器。
标签: c++ winapi ms-media-foundation heif heic