版权声明:本文为博主原创文章,未经博主允许不得转载。 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文打包上传
以上。