我正在制作一个视频动画,它首先从html canvas标记生成canvas图像,然后使用这些图像作为视频的帧。我正在使用ffmpeg进行视频生成。
当只使用一个图像时就能工作
const ffmpeg = require('fluent-ffmpeg');
ffmpeg.setFfmpegPath("C://Program Files/ffmpeg/bin/ffmpeg.exe");
var command = ffmpeg();
command
.input("./test.jpg")
.save("./test.mp4")
.outputFPS(1)
.on('end', () => {
console.log("done");
});我用这个代码制作了一个1秒长的mp4视频,但是这个视频只有一个图像/帧。
我想做的事情(2+图片)
const ffmpeg = require('fluent-ffmpeg');
ffmpeg.setFfmpegPath("C://Program Files/ffmpeg/bin/ffmpeg.exe");
var command = ffmpeg();
command
.input("./test.jpg")
.input("./another.jpg")
.save("./test.mp4")
.outputFPS(1)
.frames(2)
.on('end', () => {
console.log("done");
});这是不工作的,因为它产生相同的视频作为第一个例子。它不显示第一秒钟的一幅图像和第二秒钟的另一幅图像,而是生成只有第一张图像的一秒长视频。
谁能告诉我怎么解决这个问题吗?
发布于 2020-05-09 20:05:27
好的。在查看文档之后,添加两个图像作为输入的唯一方法似乎是使用图像文件模式。
我只需要用一个模式命名这些图像
image0.jpg
image1.jpg
image2.jpg或者,如果我想要10+或100+图像,可以使用附加的0。
现在我可以做command.input("./image%1d.jpg")了。希望这对将来和我有同样问题的人有帮助。
https://stackoverflow.com/questions/61690101
复制相似问题