将FFmpeg管道连接到S3

时间:2019-11-23 01:01:18

标签: amazon-web-services amazon-s3 ffmpeg fluent-ffmpeg

因此,我正在使用aws lambda函数,该函数下载一些文件并将它们连接在一起。我发现实际的ffmpeg命令超级快,最后一个240mb的文件大概6-10s。我的功能中最耗时的事情是将实际的最终结果视频保存到s3。我真的想尽可能地加快速度。

我当前的ffmpeg命令(节点上的Fluent-ffmpeg):

(f =多个已在本地下载的.ts文件的文本文件)

(temp_mp4 =临时mp4文件,该文件已保存在系统上,然后上传到s3)

ffmpeg()
    .addInput(f)
    .inputFormat('concat')
    .addInputOptions([ '-safe 0', '-protocol_whitelist file' ])
    .addOutputOptions([ '-y', '-codec copy' ])
    .output(temp_mp4)
    .on('error', (err) => {
        console.error('ffmpeg err', err)
    })
    .on('end', () => {
        resolve()
    })
    .run()

然后我上传到s3函数是:

function saveVideo (video, filename) {
    const params = {
        Bucket: '',
        Key: filename,
        Body: fs.createReadStream(video),
        ACL: 'public-read'
    }

    return s3.putObject(params).promise()
}

根据确切的文件大小,这可能需要20-30秒,而ffmpeg命令为6-10秒。

我最好的想法是能够以某种方式直接将ffmpeg输出传递给s3,这可能吗?

0 个答案:

没有答案