Skip to main content
 首页 » 编程设计

python之从 AWS 运行 FFmpeg

2025年05月04日12sxdcgaq8080

这段代码在我的本地机器上运行完美。

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) 

我想从 AWS 运行它

lambda 代码

import boto3 
 
import subprocess 
 
s3 = boto3.client('s3') 
 
 
def lambda_handler(event, context): 
 
    ep1PNG = s3.get_object(Bucket='my-buc',Key='ep1.PNG') 
    ep1MP3 = s3.get_object(Bucket='my-buc',Key='ep1.mp3') 
 
    p = subprocess.call( 
    '/opt/ffmpeg/ffmpeg -r 1 -loop 1 -i ep1PNG -i ep1MP3 -acodec copy -r 1 -shortest -vf scale=1280:720 /tmp/ep1.flv', shell=True) 
 
 
    # TODO implement 
    return { 
        'statusCode': 200, 
 
    } 

问题

subprocess.call() 中的这些是否正确?

/opt/ffmpeg/ffmpeg  #<-----Is this correct ? 
ep1PNG           #<-----Is this correct ? 
ep1MP3          #<-----Is this correct ? 
/tmp/ep1.flv   #<----- Not Sending Output to S3 Bucket  

如果我正朝着正确的方向前进,请评论我已经尝试了大约一个星期了

ffmpeg作为图层上传

请您参考如下方法:

可以在这里找到运行 ffmpeg 的 nodejs lambda 解决方案

https://github.com/binoculars/aws-lambda-ffmpeg

这可能是适合您的现成解决方案,或者提供一些关于如何处理您的任务的见解。