【问题标题】:How to open a HEIF (.heic) image?如何打开 HEIF (.heic) 图像?
【发布时间】:2018-02-21 12:43:06
【问题描述】:

对于 c++ 项目,我需要打开并显示 HEIF (.heic) 图像。我知道(如果我是对的)HEIF 图像基于 ffmpeg 标准,并且需要读取 H265 编解码器。

我找到了几个开源 H265 编解码器:

我可以打开并显示每个 H265 编码的视频文件,但我无法简单地打开、显示或转换 .heic 图像。它们都返回错误,或者什么都不做。

说实话我有点疑惑,因为 HEIF 标准似乎是一个保守的秘密。我找不到可以让我找到解决方案的相关信息。我发现的只是技巧和解决方法,例如强制设备(我在这里谈论的是使用新 iOS11 的 Apple iPhone)生成 jpg 图像而不是 heic,或使用第三方应用程序(如 dr.fone)。当然,这些解决方案对我来说无关紧要。

那么,有人可以告诉我应该对 .heif 图像使用哪种编解码器,以及如何使用它来打开它?或者是否有允许操作这种类型的图像文件的开源库或示例?有人可以指出好的方向吗?

【问题讨论】:

  • FFMPEG 仍然不支持 HEIF。一个错误报告是开放的来处理这个问题。 trac.ffmpeg.org/ticket/6521这应该是评论而不是回应,但我不允许评论。
  • 关于 FFMPEG 与 HEIC 图片的兼容性有什么好消息吗?
  • 好吧,就我而言,我终于得到了使用 libde265 库 (libde265.org) 的结果。但是它非常有限:在我所有的示例中,我都可以打开这个视频:github.com/strukturag/libde265.js/blob/master/demo/…。我不知道现在是否有任何 FFMPEG 库正确支持 HEIV/HEVC 格式。我所知道的是,我的公司找到了一种方法来做到这一点,使用我们的几个内部 SDK 来读取 HEIV/HEVC 媒体内容并将其发送到 FFMPEG 解码器,这导致了一个 Windows 插件,可在此处获得:@ 987654327@

标签: image ffmpeg codec heif


【解决方案1】:

Nokia 提供了一个特定于 HEIF 的示例查看器here。我也直接用FFmpeg进行了测试,它能够打开(播放/解压缩)提供的conformance files

【讨论】:

  • 感谢您的链接,我将对一致性文件进行新的测试。对于诺基亚 SDK,我已经尝试过使用它,但没有成功,而且该产品的非常严格的许可限制了我进一步研究的动力。无论如何,它只是一个允许打开 .heic 文件并将其流传输到编解码器的解析器,还是我错了?
  • 所以,现在的问题可能是:“如何将这样的流传输到编解码器”。首先,我可以使用哪种编解码器? (当然,部分答案应该在一致性文件中,我会尽快测试)
  • 您的意思是使用诺基亚的 SDK 时?我假设他们希望您为此使用 hm,但这显然取决于您,任何解码器(甚至 FFmpeg 或 de265)都可以。
【解决方案2】:

libheif 似乎是一个非常活跃的用于 HEIF 的 LGPL 库,带有 C API。来自自述文件:

该库有一个 C API,便于集成和广泛的语言支持。请注意,API 仍在开发中,可能仍会发生变化。

在 HEIF 文件中加载主图像就这么简单:

heif_context* ctx = heif_context_alloc();
heif_context_read_from_file(ctx, input_filename, nullptr);

// get a handle to the primary image
heif_image_handle* handle;
heif_context_get_primary_image_handle(ctx, &handle);

// decode the image and convert colorspace to RGB, saved as 24bit interleaved
heif_image* img;
heif_decode_image(handle, &img, heif_colorspace_RGB, heif_chroma_interleaved_24bit, nullptr);

int stride;
const uint8_t* data = heif_pixel_image_get_plane_readonly(img, heif_channel_interleaved, &stride);

一个不错的、基于 Emscripten 的 demo 可用,它实际上允许您直接在浏览器中加载和查看 HEIF 文件。

【讨论】:

  • 感谢您分享此信息。如果在我必须解决这个问题时已经存在这样的库,我可能会使用它,但不幸的是,就我而言,我已经实现了自己的库。但最好知道现在存在开源替代方案。
猜你喜欢
  • 2021-01-25
  • 2018-07-29
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2023-03-20
相关资源
最近更新 更多