diff --git a/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs
index 7ec36c6..46767cf 100644
--- a/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs
+++ b/WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
namespace Common.Shared.Application.DaHua
{
@@ -324,20 +321,20 @@ namespace Common.Shared.Application.DaHua
/// 注意:月份、日期、时间无前导零
///
[JsonPropertyName("starttime")]
- public DateTime Starttime { get; set; }
+ public required string Starttime { get; set; }
///
/// 结束时间,格式:yyyy_M_d_HH_mm_ss(如:2023_3_23_18_48_36)
/// 注意:月份、日期、时间无前导零
///
[JsonPropertyName("endtime")]
- public DateTime Endtime { get; set; }
+ public required string Endtime { get; set; }
///
/// 录像回放类型:2-设备录像,3-中心录像
///
[JsonPropertyName("videoType")]
- public string VideoType { get; set; }
+ public required string VideoType { get; set; }
///
/// 鉴权 Token(access_token),来自认证接口
diff --git a/WeiCloud.Fusion/VideoService/Video.API/Controllers/DaHua/VideoManageController.cs b/WeiCloud.Fusion/VideoService/Video.API/Controllers/DaHua/VideoManageController.cs
index ae228ae..1980c44 100644
--- a/WeiCloud.Fusion/VideoService/Video.API/Controllers/DaHua/VideoManageController.cs
+++ b/WeiCloud.Fusion/VideoService/Video.API/Controllers/DaHua/VideoManageController.cs
@@ -1,4 +1,5 @@
using Common.Shared.Application.DaHua;
+using Common.Shared.DomainService;
using Microsoft.AspNetCore.Mvc;
using Video.DomainService;
using WeiCloud.Core.BaseModels;
@@ -15,6 +16,7 @@ namespace Video.API.Controllers.DaHua
private readonly ILogger _logger;
private readonly IDahuaGeneralCtlService _dahGeneralCtlService;
private readonly IConfiguration _configuration;
+ private readonly ITokenProviderService _tokenProviderService;
///
/// 构造
@@ -22,11 +24,12 @@ namespace Video.API.Controllers.DaHua
///
///
///
- public VideoManageController(ILogger logger, IDahuaGeneralCtlService dahGeneralCtlService, IConfiguration configuration)
+ public VideoManageController(ILogger logger, IDahuaGeneralCtlService dahGeneralCtlService, IConfiguration configuration, ITokenProviderService tokenProviderService)
{
_logger = logger;
_dahGeneralCtlService = dahGeneralCtlService;
_configuration = configuration;
+ _tokenProviderService = tokenProviderService;
}
#region 大华视频处理
@@ -91,40 +94,47 @@ namespace Video.API.Controllers.DaHua
///
///
///
- [HttpGet("download/dh")]
- public async Task DownloadVideoAsync(PlayDownloadReqDto dto)
+ [HttpPost("download/dh")]
+ public async Task DownloadVideoAsync(PlayDownloadReqDto dto)
{
+ var clientId = _configuration["DahuaAuth:ClientId"];
+ var token = await _tokenProviderService.GetTokenAsync(clientId!);
+ if (!_tokenProviderService.IsTokenValid(token))
+ {
+ _logger.LogWarning("通道分页查询失败:token无效");
+ return StatusCode(500, new { success = false, message = "下载失败" });
+ }
var remoteUrl =
- $"https://{_configuration["DahHost"]}/evo-apigw/evo-httpnode/vod/cam/download.mp4" +
+ $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/evo-httpnode/vod/cam/download.mp4" +
$"?vcuid={dto.Vcuid}" +
$"&subtype=1" +
$"&starttime={dto.Starttime:yyyy_MM_dd_HH_mm_ss}" +
$"&endtime={dto.Endtime:yyyy_MM_dd_HH_mm_ss}" +
$"&videoType={dto.VideoType}" +
- $"&token={dto.Token}" +
+ $"&token={token}" +
$"&recordType={dto.RecordType}";
- return await Task.FromResult(remoteUrl);
- //try
- //{
- // var handler = new HttpClientHandler
- // {
- // ServerCertificateCustomValidationCallback = (_, _, _, _) => true
- // };
-
- // using var http = new HttpClient(handler);
- // var resp = await http.GetAsync(remoteUrl, HttpCompletionOption.ResponseHeadersRead);
-
- // resp.EnsureSuccessStatusCode();
-
- // var stream = await resp.Content.ReadAsStreamAsync();
- // var contentType = "video/mp4";
-
- // return File(stream, contentType, "video.mp4");
- //}
- //catch (Exception ex)
- //{
- // return StatusCode(500, new { success = false, message = "下载失败", error = ex.Message });
- //}
+ // return await Task.FromResult(remoteUrl);
+ try
+ {
+ var handler = new HttpClientHandler
+ {
+ ServerCertificateCustomValidationCallback = (_, _, _, _) => true
+ };
+
+ using var http = new HttpClient(handler);
+ var resp = await http.GetAsync(remoteUrl, HttpCompletionOption.ResponseHeadersRead);
+
+ resp.EnsureSuccessStatusCode();
+
+ var stream = await resp.Content.ReadAsStreamAsync();
+ var contentType = "video/mp4";
+
+ return File(stream, contentType, "video.mp4");
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, new { success = false, message = "下载失败", error = ex.Message });
+ }
}
///
diff --git a/WeiCloud.Fusion/VideoService/Video.DomainService/Dahvision/DahuaGeneralCtlService.cs b/WeiCloud.Fusion/VideoService/Video.DomainService/Dahvision/DahuaGeneralCtlService.cs
index 9eb9948..5d1949a 100644
--- a/WeiCloud.Fusion/VideoService/Video.DomainService/Dahvision/DahuaGeneralCtlService.cs
+++ b/WeiCloud.Fusion/VideoService/Video.DomainService/Dahvision/DahuaGeneralCtlService.cs
@@ -496,7 +496,7 @@ namespace Video.DomainService
{
url = dto.IpAddress;
}
- return url + $"/evo-apigw/evo-httpnode/vod/cam/download.mp4?vcuid={dto.Vcuid}&subtype={dto.Subtype}&starttime={dto.StartTime}endtime={dto.EndTime}&videoType={dto.VideoType}&token={token}&recordType={dto.RecordType}";
+ return $"https://" + url + $" /evo-apigw/evo-httpnode/vod/cam/download.mp4?vcuid={dto.Vcuid}&subtype={dto.Subtype}&starttime={dto.StartTime}endtime={dto.EndTime}&videoType={dto.VideoType}&token={token}&recordType={dto.RecordType}";
}
}
}
\ No newline at end of file