修改了一些东西

pull/22/head
刘鑫 2 months ago
parent c7d5f24fe9
commit 9e051e810d
  1. 11
      WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs
  2. 64
      WeiCloud.Fusion/VideoService/Video.API/Controllers/DaHua/VideoManageController.cs
  3. 2
      WeiCloud.Fusion/VideoService/Video.DomainService/Dahvision/DahuaGeneralCtlService.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
/// 注意:月份、日期、时间无前导零
/// </summary>
[JsonPropertyName("starttime")]
public DateTime Starttime { get; set; }
public required string Starttime { get; set; }
/// <summary>
/// 结束时间,格式:yyyy_M_d_HH_mm_ss(如:2023_3_23_18_48_36)
/// 注意:月份、日期、时间无前导零
/// </summary>
[JsonPropertyName("endtime")]
public DateTime Endtime { get; set; }
public required string Endtime { get; set; }
/// <summary>
/// 录像回放类型:2-设备录像,3-中心录像
/// </summary>
[JsonPropertyName("videoType")]
public string VideoType { get; set; }
public required string VideoType { get; set; }
/// <summary>
/// 鉴权 Token(access_token),来自认证接口

@ -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<VideoManageController> _logger;
private readonly IDahuaGeneralCtlService _dahGeneralCtlService;
private readonly IConfiguration _configuration;
private readonly ITokenProviderService _tokenProviderService;
/// <summary>
/// 构造
@ -22,11 +24,12 @@ namespace Video.API.Controllers.DaHua
/// <param name="logger"></param>
/// <param name="dahGeneralCtlService"></param>
/// <param name="configuration"></param>
public VideoManageController(ILogger<VideoManageController> logger, IDahuaGeneralCtlService dahGeneralCtlService, IConfiguration configuration)
public VideoManageController(ILogger<VideoManageController> 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
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("download/dh")]
public async Task<string> DownloadVideoAsync(PlayDownloadReqDto dto)
[HttpPost("download/dh")]
public async Task<IActionResult> 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 });
}
}
/// <summary>

@ -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}";
}
}
}
Loading…
Cancel
Save