|
@@ -11,8 +11,14 @@
|
|
@file: Test.py
|
|
@file: Test.py
|
|
@Contact: chanjunkai@163.com
|
|
@Contact: chanjunkai@163.com
|
|
"""
|
|
"""
|
|
|
|
+import os
|
|
|
|
+from io import BytesIO
|
|
|
|
+
|
|
import botocore
|
|
import botocore
|
|
|
|
+import cv2
|
|
|
|
+from PIL import Image
|
|
from botocore import client
|
|
from botocore import client
|
|
|
|
+
|
|
from Controller.DeviceConfirmRegion import Device_Region
|
|
from Controller.DeviceConfirmRegion import Device_Region
|
|
from Object.AWS.AmazonS3Util import AmazonS3Util
|
|
from Object.AWS.AmazonS3Util import AmazonS3Util
|
|
from Object.RedisObject import RedisObject
|
|
from Object.RedisObject import RedisObject
|
|
@@ -148,9 +154,41 @@ class testView(View):
|
|
return self.read_redis_list(response)
|
|
return self.read_redis_list(response)
|
|
elif operation == 'playM3u8':
|
|
elif operation == 'playM3u8':
|
|
return self.play_m3u8(request_dict, response)
|
|
return self.play_m3u8(request_dict, response)
|
|
|
|
+ elif operation == 'generate_video':
|
|
|
|
+ return self.generate_video(request_dict, response)
|
|
else:
|
|
else:
|
|
return 123
|
|
return 123
|
|
|
|
|
|
|
|
+ @classmethod
|
|
|
|
+ def generate_video(cls, request_dict, response):
|
|
|
|
+ # 设计抽取图片规则通过消息随机还是时间随机,调试copy S3对象查询是否携带失效时间
|
|
|
|
+ DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
|
|
|
+ arr_list = ['1666756086.jpeg', '1666831275.jpeg', '1666841492.jpeg']
|
|
|
|
+ s3 = AmazonS3Util(AWS_ACCESS_KEY_ID[0], AWS_SECRET_ACCESS_KEY[0], 'cn-northwest-1')
|
|
|
|
+ bucket = 'push-cloud-photo'
|
|
|
|
+ for item in arr_list:
|
|
|
|
+ path = DIR + r'\Ansjer\file\{}'.format(item)
|
|
|
|
+ s3_key = 'HA154GVEDH41RY8Y111A/1/{}'.format(item)
|
|
|
|
+ s3.download_object(bucket, s3_key, path)
|
|
|
|
+ video_dir = DIR + r'\Ansjer\file\result.mp4' # 输出视频的保存路径
|
|
|
|
+ fps = 0.5 # 帧率
|
|
|
|
+ img_size = (1920, 1080) # 图片尺寸
|
|
|
|
+ fourcc = cv2.VideoWriter_fourcc(*"mp4v")
|
|
|
|
+ videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
|
|
|
|
+ for i in arr_list:
|
|
|
|
+ img_path = DIR + r'\Ansjer\file\{}'.format(i)
|
|
|
|
+ frame = cv2.imread(img_path)
|
|
|
|
+ frame = cv2.resize(frame, img_size) # 生成视频 图片尺寸和设定尺寸相同
|
|
|
|
+ videoWriter.write(frame) # 将图片写进视频里
|
|
|
|
+ os.remove(img_path)
|
|
|
|
+ videoWriter.release() # 释放资源
|
|
|
|
+ data = open(video_dir, 'rb')
|
|
|
|
+ key = 'HA154GVEDH41RY8Y111A/1/20221027.mp4'
|
|
|
|
+ s3.upload_file_obj(bucket, key, data)
|
|
|
|
+ response_url = s3.generate_file_obj_url(bucket, key)
|
|
|
|
+ os.remove(video_dir)
|
|
|
|
+ return response.json(0, response_url)
|
|
|
|
+
|
|
@classmethod
|
|
@classmethod
|
|
def head_bucket(cls, request_dict, response):
|
|
def head_bucket(cls, request_dict, response):
|
|
bucket_name = request_dict.get('bucket', None)
|
|
bucket_name = request_dict.get('bucket', None)
|
|
@@ -1050,7 +1088,7 @@ class testView(View):
|
|
'Bucket': bucket_name,
|
|
'Bucket': bucket_name,
|
|
'Key': tsFile
|
|
'Key': tsFile
|
|
},
|
|
},
|
|
- ExpiresIn=24*60*60
|
|
|
|
|
|
+ ExpiresIn=24 * 60 * 60
|
|
)
|
|
)
|
|
playlist_entries.append({
|
|
playlist_entries.append({
|
|
'name': response_url,
|
|
'name': response_url,
|