Moh*_*een 7 ffmpeg node.js fluent-ffmpeg
我有一组视频,我想对每个视频进行屏幕截图,然后对这些生成的图像进行一些处理,最后存储它们。
为了能够进行处理,我需要将屏幕截图作为缓冲区。
这是我的代码
ffmpeg(videoFilePath)
.screenshots({
count: 1,
timestamps: ['5%'],
folder: DestinationFolderPath,
size: thumbnailWidth + 'x' + thumbnailHeight,
})
.on('err', function (error) {
console.log(err)
});
Run Code Online (Sandbox Code Playgroud)
如您所见,输出直接存储在 DestinationFolderPath 中。相反,我想将输出作为缓冲区。
Ven*_*sky -2
我不确定如何直接执行此操作,但屏幕截图保存在文件系统中的文件夹中,因此您可以从那里读取文件并将其转换为缓冲区。
const thumbnailStream = createReadStream(thumbnailPath)
const thumbnailBuffer = stream2buffer(thumbnailStream)
Run Code Online (Sandbox Code Playgroud)
将流转换为缓冲区的方法有很多,您可以在这个问题中查看。
例如从这个答案
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)
Run Code Online (Sandbox Code Playgroud)
并且createReadStream是进口自fs
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |