下面是我将h264转换为gif的代码
var ffmpeg = require("fluent-ffmpeg");
var inFilename = "/home/pi/Videos/video.mp4";
var outFilename = "/home/pi/Videos/video.gif";
var fs = require('fs');
ffmpeg(inFilename)
.outputOptions("-c:v", "copy")
.output(outFilename)
.run();
从h264到mp4时,这段代码完美无缺,只是想知道为什么它不能用于h264到gif,或者我能不能工作。
主要问题是在这种情况下你不能在GIF文件中使用H.264,所以你必须删除outputOptions
线(试图将H.264视频直接复制到GIF),以便FFmpeg重新编码输入视频。
但是,将视频大小和帧速率AS-IS转换为GIF动画并不总是明智之举,因此我建议添加一个新选项(例如,参见this answer以获取更多示例和选项)来解决这个问题。
让我们稍微修改一下代码作为开始;让我们替换这种情况的输出选项:
var ffmpeg = require("fluent-ffmpeg");
var inFilename = "/home/pi/Videos/video.mp4";
var outFilename = "/home/pi/Videos/video.gif";
ffmpeg(inFilename)
.outputOption("-vf", "scale=320:-1:flags=lanczos,fps=15")
.save(outFilename);
这里的选项与直接运行FFmpeg相同:
ffmpeg -i inputfile.h264 -vf scale=320:-1:flags=lanczos,fps=15 outputfile.gif
参数是:
scale=320:-1
将扩展到320像素的宽度。 -1将使用与宽度成比例的高度。您可以翻转它们以使用高度作为绝对大小。flags=lanczos
是用于重新采样图像的算法。 lanczos提供良好的重新采样质量fps=15
意味着GIF将以每秒15帧(FPS)的速度运行。