我有 6 张 .avif 格式的图像,我想将它们编码为一个动画 avif 文件。
我可以使用 ffmpeg 轻松地从图像创建 .gif,并将生成的 .gif 转换为 .avif,但我仍然想要一种更直接的方法
我尝试了以下方法,但它只会逐个重新编码 .avif 图像,而不会制作单个动画 AVIF 文件
ffmpeg -i *.avif -f yuv4mpegpipe -strict -1 - | avifenc --stdin --fps 13 output.avif
与:
$ ffmpeg -pattern_type glob -i '*.avif' -strict -1 -pix_fmt yuv420p10 -f yuv4mpegpipe - | avifenc --stdin --fps 13 output.avif
$ ffmpeg -f image2pipe -r 13 -pattern_type glob -i '*.avif' - | avifenc --stdin output.avif
$ ffmpeg -framerate 1/interval -i '*.avif' -vf "fps=1/interval" -pix_fmt yuv420p -f yuv4mpegpipe - | avifenc --stdin -o output.avif
使用上述 3 个命令时我收到错误:
*.avif: No such file or directory
[1] 901919 exit 1 ffmpeg -pattern_type glob -i '*.avif' -strict -1 -pix_fmt yuv420p10 -f - |
901920 segmentation fault (core dumped) avifenc --stdin --fps 13 output.avif
我有一个最新的 Linux 系统,安装了 ffmpeg 6.0
答案1
首先创建一个包含每个图像及其显示时长的列表,例如:
file '01.avif'
duration 3
file '02.avif'
duration 3
file '03.avif'
duration 3
接下来使用如下命令:
ffmpeg -f concat -i list.txt -vf "format=yuv420p,scale=800:-1" -an -loop 0 -c:v libaom-av1 out.avif