gpt4 book ai didi

video - 直接从 Mp4 生成 Gif - ffmpeg

转载 作者:行者123 更新时间:2023-12-04 22:55:58 27 4
gpt4 key购买 nike

我正在尝试从 mp4 视频文件生成 gif。我想在生成时对其进行缩放和裁剪。

我用下面的线实现了从 mp4 到 mp4 的(裁剪和缩放),(所以我可以用 ffmpeg 提取 png 并使用 Imagick 制作动画 gif),但我相信有更好的方法来实现纯粹使用 ffmpeg。
ffmpeg -i in.mp4 -filter:v "scale=300:ih*300/iw, crop=200:500:50:80" -c:a copy out.mp4
我的问题是如何实现与此代码相同的功能,但直接从 mp4 生成 gif。

然后我开始调整 mp4 到 gif 的转换,但是当调色板出现时,我无法完全理解发生了什么。

我找到了this answer我让它工作了,但是我不明白如何适应缩放和裁剪。
$ ffmpeg -y -ss 30 -t 3 -i in.mp4 \
-vf fps=10,scale=320:-1:flags=lanczos,palettegen palette.png
$ ffmpeg -ss 30 -t 3 -i in.flv -i palette.png -filter_complex \ "fps=10,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" out.gif
我部分理解了这个位的作用-y -ss 30 -t 3 -i in.mp4 (获取前 30 秒并从中生成 3 秒 gif)。但是对于接下来的几行,我完全迷失了它实际上在做什么。

如果有人可以解释每个命令的作用,或者引用解释该主题的链接,那就太棒了。

最佳答案

在您的第一个命令中,

ffmpeg -y -ss 30 -t 3 -i in.mp4 \
-vf fps=10,scale=320:-1:flags=lanczos,palettegen palette.png
-y如果输出文件已经存在,则导致 ffmpeg 覆盖,因此不提示确认。
-vf , -filter:v 的别名, 是一个视频过滤器链,它接受一个视频输入并依次处理每个指定的过滤器。所以输入 -> 过滤器 1 -> 过滤器 2 ... -> 过滤器 n -> 过滤器输出
fps=10通过根据需要丢弃或复制帧将源转换为该帧速率,不执行插值。如果您的源是 20 fps,这将每隔一帧丢弃一次。如果是 5 fps,它将每帧复制一次。
scale=320:-1:flags=lanczos将视频的宽度调整为 320 像素,将高度调整为长度,以保持原始纵横比。如果你想调整到 320x300,你可以替换 -1300 . Lanczos 是使用的缩放算法。见列表 here .兰佐斯不错。
palettegen生成整个输入流的 256 色调色板。通常与调色板一起使用。
-filter_complex在您的第二个命令中,您必须将过滤器应用于多个输入和/或需要生成多个输出。这里总结的有点长,见 here .

关于video - 直接从 Mp4 生成 Gif - ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889842/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com