У меня есть видео, хранящееся в корзине 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. Если я пытаюсь выполнить командную строку ffmpeg с тем же подписанным (то есть ffmpeg -i "https://[bucketname].s3.eu-west-1.amazonaws.com/[key.mp4]?[signedParams]" -vn -acodec pcm_s16le -ar 44100 -ac 2 video.wav
)
Я получаю сообщение об ошибке: URL подписанного запроса 'The input file does not exist'
Кажется, fs.readFileSyn c https не поддерживается, даже если я пытаюсь запросить http с тем же результатом. fs.readFileSync(signedurl)
=> дает тот же результат
Как преодолеть эту проблему?