gpt4 book ai didi

python-3.x - 如何将视频文件从 S3 存储桶传递到 opencv VideoCapture?

转载 作者:行者123 更新时间:2023-12-02 16:06:15 24 4
gpt4 key购买 nike

我正在 python 上开发一个 aws lambda 函数,它读取上传到 s3 存储桶的视频并从中提取几帧,我已经有了使用 opencv 提取帧的脚本,但我不知道我的参数是什么应该传递给 cv2.VideoCapture,因为该文件只能通过 s3 存储桶访问。

我试过使用 s3.get_object() 和 s3.download_fileobj 将视频作为 s3 对象传递,但这些似乎都不起作用。

我也尝试过在 s3 中只传递视频文件的 key ,但它也不起作用(我没想到这会起作用,但我很绝望)。

我现在的代码:

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())

但也没有运气

我得到了 success = False 和 image=None。我希望 success 的输出是 True 并且图像是一个 numpy 数组以便能够读取它。

最佳答案

A presigned url可以使用 S3 对象。

url = s3_client.generate_presigned_url( ClientMethod='get_object', Params={ 'Bucket': bucket, 'Key': key } )

vidcap = cv2.VideoCapture(url)

关于python-3.x - 如何将视频文件从 S3 存储桶传递到 opencv VideoCapture?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com