转换为JPEG时损坏的HEIC磁贴

Kim*_*meh 4 c++ ffmpeg heif

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

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

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

小智 7

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

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

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