将视频帧提取为HEIC/HEIF格式图片
将视频帧提取为HEIC/HEIF格式图片
嘿,这个问题我之前折腾过好一阵子!FFmpeg原生确实没把HEIC/HEIF作为直接输出格式支持,但咱们有不少靠谱的替代方案,下面给你整理几个实用的:
1. 编译带libheif支持的FFmpeg(一劳永逸)
这是最彻底的解决办法,以后用FFmpeg就能直接输出HEIC帧了,步骤也不算复杂:
- 先装libheif依赖:Ubuntu/Debian用
sudo apt install libheif-dev,macOS用Homebrew的话就是brew install libheif - 重新编译FFmpeg,编译的时候加上
--enable-libheif这个参数
搞定之后,就可以直接用FFmpeg提取HEIC了: - 提取指定时间点的单帧:
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 -f heif output.heic - 按固定帧率批量提取(比如每秒1帧):
ffmpeg -i input.mp4 -vf "fps=1" -f heif frame_%03d.heic
2. 先提取普通帧再转HEIC(免编译,简单快捷)
要是嫌编译麻烦,咱们分两步走也很方便:先用FFmpeg把帧提取成PNG/JPG,再转成HEIC。
- 第一步,提取普通格式的帧(以单帧为例):
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 temp.png - 第二步,用
heif-convert转格式(这个工具是libheif包自带的,装完libheif就有了):heif-convert temp.png output.heic
批量处理的话,写个小bash脚本循环就行:
# 先批量提取PNG帧,每秒1帧 ffmpeg -i input.mp4 -vf "fps=1" frame_%03d.png # 循环转成HEIC并删除临时PNG for img in frame_*.png; do heif-convert "$img" "${img%.png}.heic" rm "$img" done
3. GUI工具一键操作(适合怕命令行的朋友)
如果完全不想碰命令行,试试XnConvert这类批量处理工具:
- 打开XnConvert,直接导入你的视频文件
- 在「输入」面板设置提取帧的参数(比如每秒几帧、指定时间范围)
- 「输出」格式选HEIC/HEIF,设置好保存路径
- 点「转换」就搞定了,全程可视化,小白也能上手
另外,ImageMagick 7以上版本只要装了libheif依赖,也能直接结合FFmpeg转:ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 - | magick - output.heic
备注:内容来源于stack exchange,提问作者user1897354




