|
@@ -9,7 +9,8 @@ import time
|
|
import uuid
|
|
import uuid
|
|
import datetime
|
|
import datetime
|
|
|
|
|
|
-from django.http import HttpResponse
|
|
|
|
|
|
+from django.http import HttpResponse, StreamingHttpResponse, FileResponse
|
|
|
|
+from wsgiref.util import FileWrapper
|
|
from django.views import View
|
|
from django.views import View
|
|
|
|
|
|
from Model.models import KVS, Device_User, Device_Info
|
|
from Model.models import KVS, Device_User, Device_Info
|
|
@@ -178,11 +179,11 @@ class KVSView(View):
|
|
elif operation == 'update-data-retention': # 修改视频流数据保留时间
|
|
elif operation == 'update-data-retention': # 修改视频流数据保留时间
|
|
return self.update_data_retention(request_dict, response)
|
|
return self.update_data_retention(request_dict, response)
|
|
else:
|
|
else:
|
|
- tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
|
|
- if tko.code != 0:
|
|
|
|
- return response.json(tko.code)
|
|
|
|
- response.lang = tko.lang
|
|
|
|
- user_id = tko.userID
|
|
|
|
|
|
+ # tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
|
|
+ # if tko.code != 0:
|
|
|
|
+ # return response.json(tko.code)
|
|
|
|
+ # response.lang = tko.lang
|
|
|
|
+ # user_id = tko.userID
|
|
if operation == 'get-device-midea-list': # 获取设备列表
|
|
if operation == 'get-device-midea-list': # 获取设备列表
|
|
return self.get_device_midea_list(request_dict, response)
|
|
return self.get_device_midea_list(request_dict, response)
|
|
elif operation == 'get-hls-midea': # 获取视频播放地址
|
|
elif operation == 'get-hls-midea': # 获取视频播放地址
|
|
@@ -266,16 +267,20 @@ class KVSView(View):
|
|
@request_dict serial_number: 序列号
|
|
@request_dict serial_number: 序列号
|
|
@request_dict startTime: 开始时间
|
|
@request_dict startTime: 开始时间
|
|
@request_dict endTime: 结束时间
|
|
@request_dict endTime: 结束时间
|
|
|
|
+ @request_dict playMode: 播放模式
|
|
@param response: 响应对象
|
|
@param response: 响应对象
|
|
@return: response
|
|
@return: response
|
|
"""
|
|
"""
|
|
serial_number = request_dict.get('serial_number', None)
|
|
serial_number = request_dict.get('serial_number', None)
|
|
start_time = request_dict.get('startTime', None)
|
|
start_time = request_dict.get('startTime', None)
|
|
end_time = request_dict.get('endTime', None)
|
|
end_time = request_dict.get('endTime', None)
|
|
- if not all([serial_number, start_time, end_time]):
|
|
|
|
|
|
+ play_mode = request_dict.get('playMode', None)
|
|
|
|
+ if not all([serial_number, start_time, end_time, play_mode]):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
start_time = datetime.datetime.fromtimestamp(int(start_time)) - datetime.timedelta(hours=8)
|
|
start_time = datetime.datetime.fromtimestamp(int(start_time)) - datetime.timedelta(hours=8)
|
|
end_time = datetime.datetime.fromtimestamp(int(end_time)) - datetime.timedelta(hours=8)
|
|
end_time = datetime.datetime.fromtimestamp(int(end_time)) - datetime.timedelta(hours=8)
|
|
|
|
+ play_mode = int(play_mode)
|
|
|
|
+ play_mode = 'ON_DEMAND' if play_mode == 0 else 'LIVE_REPLAY'
|
|
try:
|
|
try:
|
|
# kvs_qs = KVS.objects.filter(stream_name=serial_number)
|
|
# kvs_qs = KVS.objects.filter(stream_name=serial_number)
|
|
# if not kvs_qs.exists():
|
|
# if not kvs_qs.exists():
|
|
@@ -288,7 +293,7 @@ class KVSView(View):
|
|
api_name='GET_HLS_STREAMING_SESSION_URL'
|
|
api_name='GET_HLS_STREAMING_SESSION_URL'
|
|
)
|
|
)
|
|
hls_streaming_session_url = kinesis_video_obj.get_hls_streaming_session_url(serial_number, start_time,
|
|
hls_streaming_session_url = kinesis_video_obj.get_hls_streaming_session_url(serial_number, start_time,
|
|
- end_time)
|
|
|
|
|
|
+ end_time, play_mode)
|
|
return response.json(0, {"HlsStreamingSessionUrl": hls_streaming_session_url})
|
|
return response.json(0, {"HlsStreamingSessionUrl": hls_streaming_session_url})
|
|
except Exception as e:
|
|
except Exception as e:
|
|
print(e)
|
|
print(e)
|
|
@@ -376,10 +381,11 @@ class KVSView(View):
|
|
stream_name=serial_number,
|
|
stream_name=serial_number,
|
|
api_name='GET_CLIP'
|
|
api_name='GET_CLIP'
|
|
)
|
|
)
|
|
- clip_obj = kinesis_video_obj.get_clip(serial_number, start_time, end_time)
|
|
|
|
|
|
+ clip_obj, clip_size = kinesis_video_obj.get_clip(serial_number, start_time, end_time)
|
|
res = HttpResponse(clip_obj.read())
|
|
res = HttpResponse(clip_obj.read())
|
|
- res["content_type"] = "application/octet-stream"
|
|
|
|
|
|
+ res["content_type"] = "video/mp4"
|
|
res["Content-Disposition"] = "attachment;filename=video.mp4"
|
|
res["Content-Disposition"] = "attachment;filename=video.mp4"
|
|
|
|
+ res['Content-Length'] = str(clip_size)
|
|
return res
|
|
return res
|
|
except Exception as e:
|
|
except Exception as e:
|
|
print(e)
|
|
print(e)
|