流利的 ffmpeg h264 到 gif 投掷 "error 1"
fluent-ffmpeg h264 to gif throwing "error 1"
下面是我将 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
行(它试图 copy H.264 视频直接转为 GIF)以便 FFmpeg 重新编码输入视频。
但是,将视频大小和帧速率按原样转换为 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)。
下面是我将 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
行(它试图 copy H.264 视频直接转为 GIF)以便 FFmpeg 重新编码输入视频。
但是,将视频大小和帧速率按原样转换为 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)。