此代码在我的本地计算机上完美运行,但我想将其移至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存储桶
答案 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的存储空间。