gpt4 book ai didi

node.js - 在 Node.js 中使用 ffmpeg 将图像放在视频上

转载 作者:行者123 更新时间:2023-12-04 23:01:27 26 4
gpt4 key购买 nike

我正在 node.js 中创建服务器端视频渲染器。我需要每帧在现有视频文件上添加图像。我需要设置渲染视频中每一帧的具体位置。我持有 Readable 中的所有图像帧.这是我的有效代码,但没有考虑图像的位置。我该如何修改它?当然,我有一个带有图像坐标的列表 - 但我不知道如何从中制作过滤器。this.stream是图像列表。

  const filter = ["[1:v]format=argb,setpts=PTS+" + 0 + "/TB[out]",
{
filter: "overlay",
options: {
enable: "between(t," + 0 + "," + 9 + ")",
x: "0",
y: "0",
},
inputs: "[0:v][out]",
outputs: "tmp",
}

]
const Options = [
"-crf 16",
"-f mp4",
"-vcodec libx264",
"-movflags frag_keyframe+empty_moov",
"-pix_fmt yuv420p",
];

var ffmpeg = require('fluent-ffmpeg');
ffmpeg.setFfmpegPath(ffm.path);
var command = ffmpeg();

const outputStream = fs.createWriteStream(this.Path + "test.mp4");

command.input(this.Path + "input.mp4");
command.input(this.stream).inputFPS(23);
command.outputOptions(Options);
command.fps(23);

command.complexFilter(filter, "tmp");

command.output(outputStream);

最佳答案

而不是使用 const filter我建议使用内置的 fluent-ffmpeg 功能。此代码将添加一个位于 (50, 50) 的图像:video_pathimage_path是视频和图像的文件路径。overlay=50:50会将您的图像放置在位置 x=50 , y=50从左上角。
然后保存文件并处理错误

const command = ffmpeg(video_path)
.input(image_path)
.complexFilter([
`overlay=50:50`,
])
.saveToFile("./public/vid.mp4")
.on("error", (err) => {
console.log(err);
})
.on("end", () => {
console.log("File saved.");
});
有关更多信息,请参阅 github 问题: https://github.com/fluent-ffmpeg/node-fluent-ffmpeg/issues/770

关于node.js - 在 Node.js 中使用 ffmpeg 将图像放在视频上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68208905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com