我正在使用opencv从S3存储桶中的图像/视频创建缩略图。 与其从S3下载图像/视频,不如直接在opencv中使用aws s3预签名的url。
如果我们通过以下跟踪,则没有任何问题
1.来自本地的图像/视频,例如:cv2.VideoCapture(test.mp4)
2.不带x-amz-security-token的预签名网址。
示例:https://bucket/key?AWSAccessKeyId= {id_value}&Expires = {date_value}&Signature = {signature_value}
但是如果预签名的网址具有x-amz-security-token,Python就会崩溃
示例:https://bucket/key?AWSAccessKeyId= {id_value}&Expires = {date_value}& x-amz-security-token = {token_value} &Signature = {signature_value}
以下python代码段
import boto3
import cv2
s3_client = boto3.client('s3')
url = s3_client.generate_presigned_url(
ClientMethod='get_object',
Params={'Bucket': bucket, 'Key': key}
)
cap = cv2.VideoCapture(url)
视频捕获应该可以正常工作,而不会导致python崩溃,但是 Windows中的Python.exe已停止工作并出现错误“问题导致程序无法正常运行。请关闭程序”
相同的代码在Linux中有错误“分段错误(代码已转储)”