gpt4 book ai didi

javascript - FFMPEG 需要 3 分钟生成缩略图

转载 作者:行者123 更新时间:2023-12-04 23:06:42 31 4
gpt4 key购买 nike

我正在使用 FLUENT-FFMPEG 和 Node js 生成 Sprite 图像(组合缩略图/屏幕截图),图像看起来像这样。
enter image description here
这是我用于生成 Sprite 图像/缩略图的 Node js 脚本。

const ffmpegPath = require("@ffmpeg-installer/ffmpeg").path;
const ffmpegCommand = require("fluent-ffmpeg");
ffmpegCommand.setFfmpegPath(ffmpegPath);

let videoUrl =
"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4";
const filename = `output_image`;

ffmpegCommand(videoUrl)
.seekInput("00:00:01.000")
.outputOptions([
"-q:v",
"8",
"-frames:v",
"1",
"-vsync",
"0",
"-qscale",
"50",
"-vf",
"fps=1/10,scale=128:72,tile=11x11",
])
.addOption("-preset", "superfast")
.on("error", (err) => {
console.log("error", err);
reject(err);
})

.save(`./tmp/${filename}.png`);
不幸的是,生成这张非常糟糕的图像需要将近 3 分钟。
更新
@kesh 答案仅适用于内部视频。
如果我按如下方式添加视频 URL。 let videoUrl ="./videos/t.mp4";然后生成缩略图需要不到 3 秒的时间。
但如果我使用如下外部 URL。 let videoUrl ="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4";很奇怪,根据视频的不同,生成超过 3 分钟的缩略图需要很长时间。
注意 您可以阅读完整的文档 here关于 FFmpeg 和 Node js。
我需要更改哪些内容才能超快速生成缩略图?

最佳答案

tl;博士使用 -discard nokey输入选项
它需要很长时间,因为它正在解码所有视频帧以覆盖 1210 秒(约 2 分钟的内容)。 ...好吧,我不知道为什么您的设置需要 3 分钟...
无论如何,从 fps 开始filter 可以很好地减少过滤负载(仅对您要包含的帧执行缩放)但它不会阻止所有帧被解码,仅用于丢弃大部分帧(仅保留 1 个240)。
防止解码器处理所有帧的一种方法(唯一方法?)是告诉它忽略非关键帧。关键帧间隔应该足够紧,您仍然可以获得所需的效果。
我已经使用以下命令对其进行了测试:

ffmpeg -ss 1 -discard nokey -i "{inurl}" \
-vf fps=1/10,scale=128:72,tile=11x11 \
-an -frames:v 1 {outurl}
我的(大约 10 岁)电脑在没有 -discard nokey 的情况下花了 36.3 秒而这个选项只用了 2.7 秒。 (在 Python 中测试)

关于javascript - FFMPEG 需要 3 分钟生成缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71878115/

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