【发布时间】:2019-06-19 23:37:50
【问题描述】:
每当文件上传到 S3 存储桶时,我都会尝试使用 AWS lambda 函数将视频文件转换为音频文件。所以我使用 FFMPEG 将视频文件转换为音频。但是我在转换视频文件时不断收到此错误。我见过类似的问题,但没有一个解决方案对我不起作用。因此,如果有人知道,请分享您的解决方案。
错误信息
TypeError: Cannot create property 'stack' on string
'Could not find ffmpeg executable, tried "/var/task/node_modules/@ffmpeg-installer/linux-x64/ffmpeg" and "/var/task/node_modules/@ffmpeg-installer/ffmpeg/node_modules/@ffmpeg-installer/linux-x64/ffmpeg"'
代码
const
ffmpegPath = require("@ffmpeg-installer/ffmpeg").path,
ffmpeg = require("fluent-ffmpeg");
// set ffmpeg package path
ffmpeg.setFfmpegPath(ffmpegPath);
function convert(input, output, callback) {
ffmpeg(input)
.output(output)
.on('end', function() {
console.log('conversion ended');
callback(null);
}).on('error', function(err){
console.log('error: ', err.code, err.msg);
callback(err);
}).run();
}
exports.handler = function (event, context, callback) {
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
console.log("key ", key);
console.log("event ", event.Records[0].s3);
convert(key, `/tmp/${key}.mp3`, function(err){
if(!err) {
console.log('conversion complete');
} else {
console.log('Error');
}
});
}
const
ffmpegPath = require("@ffmpeg-installer/ffmpeg").path,
ffmpeg = require("fluent-ffmpeg");
// set ffmpeg package path
ffmpeg.setFfmpegPath(ffmpegPath);
function convert(input, output, callback) {
ffmpeg(input)
.output(output)
.on('end', function() {
console.log('conversion ended');
callback(null);
}).on('error', function(err){
console.log('error: ', err.code, err.msg);
callback(err);
}).run();
}
exports.handler = function (event, context, callback) {
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
console.log("key ", key);
console.log("event ", event.Records[0].s3);
convert(key, `/tmp/${key}.mp3`, function(err){
if(!err) {
console.log('conversion complete');
} else {
console.log('Error');
}
});
}
package.json
"dependencies": {
"@ffmpeg-installer/ffmpeg": "^1.0.17",
"fluent-ffmpeg": "^2.1.2",
"fs": "0.0.1-security"
}
【问题讨论】:
-
您是否在 Lambda 包中包含了 ffmpeg 可执行文件和依赖项? intoli.com/blog/transcoding-on-aws-lambda
-
你的意思是node_modules吗?
-
没有。通常这些库只是将调用委托给实际的 ffmpeg 可执行文件(C++ 可执行文件)。请参阅链接以获取 python 示例。通常尝试在 ec2 实例上执行此操作,以了解其工作原理以及所有部分如何组合在一起。
-
嗨@kashyap,这段代码在我的本地运行良好,但不能在 lambda 函数中运行。我很困惑,请帮助找到解决方案。
标签: node.js amazon-web-services ffmpeg aws-lambda