node.js - 如何将 fluent-ffmpeg 屏幕截图的输出作为缓冲区而不是直接写入磁盘?

标签 node.js ffmpeg fluent-ffmpeg

我有一组视频,我想从每个视频中截取一个屏幕截图,然后对这些生成的图像进行一些处理,最后将它们存储起来。
为了能够进行处理,我需要将屏幕截图作为缓冲区。
这是我的代码

ffmpeg(videoFilePath)
.screenshots({
     count: 1,
     timestamps: ['5%'],
     folder: DestinationFolderPath,
     size: thumbnailWidth + 'x' + thumbnailHeight,
})
.on('err', function (error) {
     console.log(err)
});
如您所见,输出直接存储在 DestinationFolderPath 中。而不是我想将输出作为缓冲区。

最佳答案

我不确定如何直接执行此操作,但屏幕截图保存在文件系统的文件夹中,因此您可以从那里读取文件并将其转换为缓冲区。

const thumbnailStream = createReadStream(thumbnailPath)
const thumbnailBuffer = stream2buffer(thumbnailStream)
将流转换为缓冲区的方法有很多,您可以查看 this question .
例如from this answer
function stream2buffer(stream) {
    return new Promise((resolve, reject) => {        
        const _buf = [];
        stream.on("data", (chunk) => _buf.push(chunk));
        stream.on("end", () => resolve(Buffer.concat(_buf)));
        stream.on("error", (err) => reject(err));
    });
} 

const thumbnailStream = createReadStream(thumbnailPath)
const thumbnailBuffer = await stream2buffer(thumbnailStream)
createReadStreamfs 导入

关于node.js - 如何将 fluent-ffmpeg 屏幕截图的输出作为缓冲区而不是直接写入磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64876235/

相关文章:

python - 关闭 js 上的 PythonShell( Electron + flask )

audio - FFMPEG 改变音调频率(音高音频)

ffmpeg - 从 WMV 进行更快的 FFMPEG 转换

FFMPEG - 如何获取特定文件或容器的支持代码列表以进行枚举

node.js - 使用 fluent-ffmpeg 转换 AWS Polly 音频流

node.js - 在 “npm start”上使用WSL + Electron + Typescript获取SUID Sandbox Helper错误

javascript - 在这种特殊情况下如何将数组转换为对象?

video - ffmpeg concat 错误找不到合适的输出格式

FFmpeg fontcolor_expr 随时间动态改变字体颜色

javascript - Apache Spark 和 node.js