NodeJS - 寻找更快的方法来创建 FFMPEG 缩略图

Posted

技术标签:

【中文标题】NodeJS - 寻找更快的方法来创建 FFMPEG 缩略图【英文标题】:NodeJS - Looking for faster ways to create FFMPEG thumbnails 【发布时间】:2016-07-04 04:51:58 【问题描述】:

我在节点中使用 fluent-ffmpeg 和 ffmpeg:

var ffmpeg = require('fluent-ffmpeg');
var src = "http://upload.wikimedia.org/wikipedia/commons/7/79/Big_Buck_Bunny_small.ogv";
ffmpeg(src)
.on('filenames', function(filenames) 
    console.log('Will generate ' + filenames.join(', ') + ' into tempfiles.')
)
.on('end', function() 
    console.log('1 Screenshot successfully taken');

)
.on('error', function(err, stdout, stderr) 
console.log("ffmpeg stdout:\n" + stdout);
console.log("ffmpeg stderr:\n" + stderr);
)
.screenshots(
    filename: randomResult,
    timemarks: [520.929831],
    folder: '/'
);

通常,拍摄一张缩略图需要 2-3 秒。 我需要它是 0.5-1 秒进行实时开发。我的意思是,这里有什么问题 - 在我的计算机上下载单个 png 文件需要不到 2-3 秒才能完成,为什么 ffmpeg 滞后这么多?似乎有些不对劲。

【问题讨论】:

你知道 ffmpeg 是做什么来生成那个 PNG 的吗?我认为它必须找到正确的编解码器来解码该 OGV 文件,找到第一个不是黑色的帧,然后将其转换为 PNG。与下载文件不同。 是的,但我仍然相信它可以做得更快。 那么您必须找到能够更快完成此任务的软件。我不知道,但它仍然不会像下载文件那样快。 如何从输出文件夹中获取图片? 【参考方案1】:

根据 fluent-ffmpeg docs “它不适用于输入流。”所以我怀疑整个文件都在尝试加载。

您可以尝试使用 -ss 开关直接将 ffmpeg 作为子进程运行,如 post 中所述。这应该会影响你的表现。

【讨论】:

框架“它不适用于输入流。”帮助我解决了 fluent-ffmpeg 的其他问题,我认为有很多地方无法使用流。谢谢!

以上是关于NodeJS - 寻找更快的方法来创建 FFMPEG 缩略图的主要内容,如果未能解决你的问题,请参考以下文章

有没有比 fread() 更快的方法来读取大数据?

在 SAS 中,如果空变量不存在,是不是有更快的方法来创建它?

加密 Nodejs JWT 令牌

在现有节点之间创建关系的更快方法?

在nodejs(异步)中寻找循环和回调的正确模式

什么是更快的嵌套循环或多个循环? [关闭]