fluent-ffmpeg h264到gif投掷“错误1”

问题描述 投票:2回答: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,或者我能不能工作。

javascript node.js raspberry-pi h.264 fluent-ffmpeg
1个回答
2
投票

主要问题是在这种情况下你不能在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)的速度运行。
© www.soinside.com 2019 - 2024. All rights reserved.