繁体   English   中英

fluent-ffmpeg h264 到 gif 抛出“错误 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行(它试图H.264 视频直接复制到 GIF),以便 FFmpeg 重新编码输入视频。

但是,将视频大小和帧速率按原样转换为 GIF 动画并不总是明智的做法,因此我建议添加一个新选项(例如,请参阅此答案以获取更多示例和选项)来解决这个问题。

作为开始,让我们稍微修改一下代码; 让我们替换这种情况下的输出选项:

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) 的速度运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM