【发布时间】:2019-11-28 21:58:20
【问题描述】:
我正在 python 上开发一个 aws lambda 函数,它读取上传到 s3 存储桶的视频并从中提取一些帧,我已经有了用 opencv 提取帧的脚本,但我不知道我是什么参数应该传递给 cv2.VideoCapture,因为该文件只能通过 s3 存储桶访问。
我尝试使用 s3.get_object() 以及 s3.download_fileobj 将视频作为 s3 对象传递,但这些似乎都不起作用。
我也尝试在 s3 中仅传递视频文件的密钥,但它也不起作用(我没想到这会起作用,但我很绝望)。
我现在拥有的代码:
import boto3
import cv2
import io
def lambda_handler(event, context):
s3 = boto3.client("s3")
bucket_name = "my_bucket"
video_key = "videos/video.mp4"
vidcap = cv2.VideoCapture(s3.get_object(Bucket=bucket_name,Key=video_path))
success,image = vidcap.read()
我也试过:
vidcap = cv2.VideoCapture(s3.download_fileobj(Bucket=bucket_name, Key=video_key, Fileobj=io.BytesIO())
但也没有运气
我得到了成功 = False 和 image=None。我希望成功的输出是 True 并且图像是一个能够读取它的 numpy 数组。
【问题讨论】:
标签: python-3.x amazon-web-services opencv amazon-s3 aws-lambda