Node.js ffmpeg 从 2 个或更多 jpg 图像创建 mp4 视频
Node.js ffmpeg creating a mp4 video from 2 or more jpg images
我正在制作一个视频动画师,它首先从 html canvas
标签生成 .jpg
图像,然后使用这些图像作为视频的帧。我正在使用 ffmpeg
来生成视频。
仅使用 1 张图像时有效
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 视频,但这只有一个 image/frame。
我正在尝试做什么(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");
});
这不起作用,因为它生成的视频与第一个示例相同。它不是第一秒显示一个图像,第二秒显示另一个图像,而是生成一个只有第一张图像的一秒长视频。
有人可以告诉我如何解决这个问题吗?
好的。在查看文档后,似乎将两个图像添加为输入的唯一方法是使用图像文件模式。
我只需要按照
这样的模式命名图像
image0.jpg
image1.jpg
image2.jpg
或者,如果我想要 10+ 或 100+ 张图像,则在前面加上额外的 0。
现在我可以做到 command.input("./image%1d.jpg")
。
希望这对以后和我有同样问题的人有所帮助。
我正在制作一个视频动画师,它首先从 html canvas
标签生成 .jpg
图像,然后使用这些图像作为视频的帧。我正在使用 ffmpeg
来生成视频。
仅使用 1 张图像时有效
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 视频,但这只有一个 image/frame。
我正在尝试做什么(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");
});
这不起作用,因为它生成的视频与第一个示例相同。它不是第一秒显示一个图像,第二秒显示另一个图像,而是生成一个只有第一张图像的一秒长视频。
有人可以告诉我如何解决这个问题吗?
好的。在查看文档后,似乎将两个图像添加为输入的唯一方法是使用图像文件模式。
我只需要按照
这样的模式命名图像image0.jpg
image1.jpg
image2.jpg
或者,如果我想要 10+ 或 100+ 张图像,则在前面加上额外的 0。
现在我可以做到 command.input("./image%1d.jpg")
。
希望这对以后和我有同样问题的人有所帮助。