转换为JPEG时损坏的HEIC磁贴

时间:2017-08-03 13:27:00

标签: c++ ffmpeg heif

我无法将.HEIC图像转换为jpeg。 .HEIC文件使用运行最新ios公共测试版的iphone拍摄的图像。我使用library nokia provided解析文件并从.HEIC文件中提取图像切片,将它们转换为jpeg并使用ffmpeg / montage将它们粘合在一起。

有太多代码要将它全部粘贴到这个问题中,所以我将所有内容都放在这个github repo中。它非常自我解释,只需几个依赖项就可以运行。它们在repo的自述文件中有解释。这一切都是在osx btw上完成的。

.HEIC文件包含8x6图像网格(图块),如果将它们放在一起,您将获得完整的图像。简单地把我输入的任何图像第7个图块损坏如下所示,我真的不明白为什么。我已经向诺基亚提出了一个问题,但回购似乎已经死了,我真的不希望在那里得到答案。

1 个答案:

答案 0 :(得分:7)

第7个图块中的VPS / SPS / PPS参数集存在错误。我没有追查问题是在实际文件中还是在HEIF解析器中,但同时还有一个简单的解决方法。

参考HevcImageFileReader :: getItemDataWithDecoderParameters并观察它如何将参数集预先添加到每个图块的实际项目数据中。

您需要做的就是读取第一个图块的参数集,并将其重新用于后续图块而不是重新阅读它们。这将解决来自第7个瓦片的损坏参数。这样做似乎是安全的,因为这是一种网格格式,并且要求每个图块都是相同的。

相关问题