如何从S3存储桶中SRC文件

时间:2019-05-09 01:55:14

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

此代码在我的本地计算机上完美运行,但我想将其移至AWS Lambda

我已经将ffmpeg作为二进制依赖项上传到功能层

import subprocess
p = subprocess.call(
    'ffmpeg -r 1 -loop 1 -i "./ep1.png" -i "./ep1.mp3" -acodec copy -r 1 -shortest -vf scale=1280:720 ep1.flv', shell=True)

问题是如何替换

"./ep1.png" 

"./ep1.mp3" 

作为ffmpeg命令的可理解路径

这是我从boto3中找到的文档,但不确定如何实现

 s3 = boto3.client('s3')
 s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')

让我知道我是否朝着正确的方向前进,在此步骤之后,我将使用boto3将ep1.flv上传到输出S3存储桶

1 个答案:

答案 0 :(得分:1)

AWS Lambda函数可以将数据存储在/tmp/目录中。

因此,您可以使用:

 s3.download_file('my-bucket', 'ep1.mp3', '/tmp/ep1.mp3')
 s3.download_file('my-bucket', 'ep1.png', '/tmp/ep1.png')

p = subprocess.call(
    'ffmpeg -r 1 -loop 1 -i "/tmp/ep1.png" -i "/tmp/ep1.mp3" -acodec copy -r 1 -shortest -vf scale=1280:720 /tmp/ep1.flv', shell=True)

此外,请确保在函数退出之前删除/tmp/中的文件,因为该容器可能会被重用,并且仅提供500MB的存储空间。