使用azure函数nodejs创建缩略图



我试图使用azure功能创建缩略图(png)从。mp4文件上传到azure存储位置。上传新的视频文件时自动触发Azure功能

我现在面临的问题是,FFMPEG需要本地存储来创建缩略图和azure功能没有本地存储附加到它。

我试图找到一种方法来使用azure存储,但我们需要数据流(缓冲区)上传文件到azure存储和FFMPEG不提供数据流(缓冲区)的输出。

语言:NodeJS

以下是我使用FFMPEG的代码:

fs.writeFileSync(pathToCreate, data);
const targetPath = path.join(dirToCreate, 'thumbnail.png');
const width = parseInt(process.env.WIDTH || "360");
const ffmpeg = spawnSync(
ffmpegStatic, [
"-y",
"-i",
`${pathToCreate}`,
"-ss",
"00:00:01",
"-vf",
`scale=${width}:-1`,
"-frames:v",
"1",
`${targetPath}`
], {
shell: true
});

读取文件时出现如下错误:

Error: ENOENT: no such file or directory, open /tmp/temp-file.png

谁有解决这个问题的办法?对

我推荐使用fluent-ffmpeg的程序,因为它可以使用withsize()方法处理图像和视频文件类型。

参考:https://www.npmjs.com/package/video-thumbnail-generator中提到的程序从视频生成缩略图。

参考:https://www.npmjs.com/package/fluent-ffmpeg/v/1.7.0#generating-thumbnails从fluent-ffmpeg生成缩略图

const ffmpeg = require('fluent-ffmpeg');
new ffmpeg({ source: '/path/to/video1.extension' })
.withSize('mention size')
.on('error', function(err) {
console.log('An error occurred: ' + err.message);
})
.on('end', function(name_of_file) {
console.log('Thumbnail was successfully generated ' + filenames.join(', '));
})
.takeScreenshots(5, '/path/to/location_of_file');

要使用上述代码块,必须安装ffmpeg

最新更新