【发布时间】:2020-04-28 16:40:51
【问题描述】:
我有一个存储在 s3 存储桶中的视频,带有经过身份验证的读取 ACL。
我需要阅读并使用 ffmpeg (nodejs) 制作预告片
这是我用来生成预告片的代码
exports.generatePreview = (req, res) => {
const getParams = {
Bucket: S3_CREDENTIALS.bucketName,
Key: req.params.key
}
s3.getSignedUrl('getObject', getParams, (err, signedRequest) => {
console.log(signedRequest, err, 'getSignedUrl')
ffmpeg(new URL(signedRequest))
.size('640x?')
.aspect('4:3')
.seekInput('3:00')
.duration('0:30')
.then(function (video) {
s3.putObject({ Bucket: S3_CREDENTIALS.bucketName, key: 'preview_' + req.body.key, Body: video }, function (err, data) {
console.log(err, data)
})
});
});
}
不幸的是,构造函数路径似乎没有读取远程 url。如果我尝试使用相同的signedurl(即ffmpeg -i "https://[bucketname].s3.eu-west-1.amazonaws.com/[key.mp4]?[signedParams]" -vn -acodec pcm_s16le -ar 44100 -ac 2 video.wav)执行ffmpeg命令行
我得到的错误是signedRequest url 'The input file does not exist'
似乎 fs.readFileSync https 不受支持,即使我尝试使用 http 请求得到相同的结果。 fs.readFileSync(signedurl) => 给出相同的结果
如何解决这个问题?
【问题讨论】:
标签: amazon-web-services amazon-s3 ffmpeg