使用AWS Lambda Python 实现S3桶上传事件触发,进行视频压缩存储

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bw_yyziq/article/details/85048433

最近实现录制视频实时上传到AWS S3中,同时想对上传的视频进行压缩存储。考虑到用AWS Lambda来实现。

实时上传是在Spring Boot项目中处理的,本文针对用Python 实现S3桶上传事件触发,进行视频压缩存储。这一过程做个笔记。

1. 新建Lambda项目

2. 添加S3触发器

3. 新建执行角色,为lambda 添加S3权限

4. 语言选择python

5. 编码,准备ffmpeg,打包上传

python代码

import logging
import boto3
import json
import os
logger = logging.getLogger()
logger.setLevel(logging.INFO)

s3 = boto3.resource('s3')

def lambda_handler(event, context):
    
    text = event['Records'][0]
    filename = text['s3']['object']['key']
    logger.info(filename)
    
    localFileName = '/tmp/' + filename
    s3.meta.client.download_file('S3-name', filename, localFileName)
    
    # f = open(localFileName,'r')
    # logger.info(f.read())
    
    logger.info(os.system('ls /tmp'))
    
    localFileName_split = localFileName.split('.', 1)
    compressFileName = localFileName_split[0] + '_compression' + '.' + localFileName_split[1]
    
    ffmpegCmd = './ffmpeg -i ' + localFileName + ' -vcodec libx264 -preset fast -crf 30 ' + compressFileName
    logger.info(os.system('ls /tmp'))

    logger.info(os.system(ffmpegCmd))

    s3.meta.client.upload_file(compressFileName, 'S3-name', filename)

将python代码和ffmpeg文打包上传

以上。

猜你喜欢

转载自blog.csdn.net/bw_yyziq/article/details/85048433