相关疑难解决方法(0)

在Lambda上进行FFmpeg转码会导致无法使用的(静态)音频

我想转向无服务器以在AWS中进行音频转码例程。我一直在尝试设置Lambda函数来做到这一点;执行静态FFmpeg二进制文件,然后重新上传结果音频文件。我正在使用的静态二进制文件在这里

我在Python中使用的Lambda函数如下所示:

import boto3

s3client = boto3.client('s3')
s3resource = boto3.client('s3')

import json
import subprocess 

from io import BytesIO

import os

os.system("cp -ra ./bin/ffmpeg /tmp/")
os.system("chmod -R 775 /tmp")

def lambda_handler(event, context):

    bucketname = event["Records"][0]["s3"]["bucket"]["name"]
    filename = event["Records"][0]["s3"]["object"]["key"]

    audioData = grabFromS3(bucketname, filename)

    with open('/tmp/' + filename, 'wb') as f:
        f.write(audioData.read())

    os.chdir('/tmp/')

    try:
        process = subprocess.check_output(['./ffmpeg -i /tmp/joe_and_bill.wav /tmp/joe_and_bill.aac'], shell=True, stderr=subprocess.STDOUT)
        pushToS3(bucketname, filename)
        return process.decode('utf-8')
    except subprocess.CalledProcessError as e:
        return e.output.decode('utf-8'), os.listdir()


def grabFromS3(bucket, file):

    obj = s3client.get_object(Bucket=bucket, Key=file)
    data …
Run Code Online (Sandbox Code Playgroud)

mp3 encoding ffmpeg libav aws-lambda

3
推荐指数
1
解决办法
664
查看次数

标签 统计

aws-lambda ×1

encoding ×1

ffmpeg ×1

libav ×1

mp3 ×1