使用 ffmpeg 将 heif 文件转换为 png/jpg

Aji*_*ngh 3 ffmpeg heif heic

用例非常简单。Imagemagick 能够进行转换,但我想使用 ffmpeg 进行转换。这是我尝试过的所有命令,它们都给出了 moov atom not found 错误。

ffmpeg -i /Users/ajitesh/Downloads/sample1.heif -c:v png -pix_fmt rgb48 /Users/ajitesh/Downloads/sample.png
Run Code Online (Sandbox Code Playgroud)

输出

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f85aa813200] moov atom not found
/Users/ajitesh/Downloads/sample1.heif: Invalid data found when processing input
Run Code Online (Sandbox Code Playgroud)

通过尝试使用以下命令提取 moov atom 的位置,似乎 moov atom 实际上并不存在

ffmpeg -v trace -i /Users/ajitesh/Downloads/sample1.heif 2>&1 | grep -e type:\'mdat\' -e type:\'moov\'
Run Code Online (Sandbox Code Playgroud)

输出

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f824c00f000] type:'mdat' parent:'root' sz: 2503083 420 2503495
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f824c00f000] type:'mdat' parent:'root' sz: 2503083 420 2503495
Run Code Online (Sandbox Code Playgroud)

Jor*_*ard 8

好吧,已经是 2023 年了,ffmpeg 仍然不支持heif图像格式。我建议使用heif-convert,它可以通过所有主要的 Linux 包管理器和自制软件获得。

heif-convert以下是在主要 Linux 发行版和 macOS 上安装和使用的说明。它的用法如下所示:

heif-convert input.[heic|heif] output.[png|jpg]
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式安装它:

  1. Ubuntu/Debian:
sudo apt-get install libheif1
Run Code Online (Sandbox Code Playgroud)
  1. 软呢帽:
sudo dnf install libheif
Run Code Online (Sandbox Code Playgroud)
  1. RHEL/CentOS:
sudo yum install epel-release libheif
Run Code Online (Sandbox Code Playgroud)
  1. 拱门Linux:
sudo pacman -S libheif
Run Code Online (Sandbox Code Playgroud)
  1. 开放SUSE:
sudo zypper install libheif1
Run Code Online (Sandbox Code Playgroud)
  1. 苹果系统:
brew install libheif
Run Code Online (Sandbox Code Playgroud)


llo*_*gan 5

FFmpeg 目前不支持 HEIF 解码(截至 2021-01-11)。

检查错误报告#6521:由于 FFmpeg 开发处于活动状态,因此HEIF 支持在未来可能会发生变化。