|
|
|
@ -51,7 +51,11 @@ namespace Video.DomainService |
|
|
|
// 2) Token:优先入参,其次缓存/获取(建议返回完整的 "Bearer xxx") |
|
|
|
// 2) Token:优先入参,其次缓存/获取(建议返回完整的 "Bearer xxx") |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
|
|
|
if (_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
_logger.LogWarning("hls等录像回放:token无效"); |
|
|
|
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
|
|
|
} |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/record"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/record"; |
|
|
|
|
|
|
|
|
|
|
|
// 3) 构造请求(把 dto 放进 Body),并用 SendAsync 发送,才能带上头 |
|
|
|
// 3) 构造请求(把 dto 放进 Body),并用 SendAsync 发送,才能带上头 |
|
|
|
@ -71,7 +75,7 @@ namespace Video.DomainService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
if (result == null || !result.Success || result.Code != "0") |
|
|
|
if (result == null || !result.Success) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_logger.LogWarning("录像请求业务失败: {Body}", body); |
|
|
|
_logger.LogWarning("录像请求业务失败: {Body}", body); |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1008", Msg = "录像请求失败" }; |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1008", Msg = "录像请求失败" }; |
|
|
|
@ -103,7 +107,11 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
|
|
|
if (_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
_logger.LogWarning("查询普通录像信息列表:token无效"); |
|
|
|
|
|
|
|
return new DaHApiResult<RecordsResDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
|
|
|
} |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Record/QueryRecords"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Record/QueryRecords"; |
|
|
|
|
|
|
|
|
|
|
|
using var req = new HttpRequestMessage(HttpMethod.Post, url) |
|
|
|
using var req = new HttpRequestMessage(HttpMethod.Post, url) |
|
|
|
@ -124,7 +132,7 @@ namespace Video.DomainService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<RecordsResDto>>(body); |
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<RecordsResDto>>(body); |
|
|
|
if (result == null || !result.Success || result.Code != "0") |
|
|
|
if (result == null || !result.Success) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_logger.LogWarning("查询录像信息业务失败: {Body}", body); |
|
|
|
_logger.LogWarning("查询录像信息业务失败: {Body}", body); |
|
|
|
return new DaHApiResult<RecordsResDto> { Success = false, Code = "1008", Msg = "查询录像信息失败" }; |
|
|
|
return new DaHApiResult<RecordsResDto> { Success = false, Code = "1008", Msg = "查询录像信息失败" }; |
|
|
|
@ -156,6 +164,11 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
|
|
|
if (_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
_logger.LogWarning("通道分页查询失败:token无效"); |
|
|
|
|
|
|
|
return new DaHApiResult<PageInfoDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/evo-brm/1.2.0/device/channel/subsystem/page"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/evo-brm/1.2.0/device/channel/subsystem/page"; |
|
|
|
|
|
|
|
|
|
|
|
@ -177,7 +190,7 @@ namespace Video.DomainService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<PageInfoDto>>(body); |
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<PageInfoDto>>(body); |
|
|
|
if (result == null || !result.Success || result.Code != "0") |
|
|
|
if (result == null || !result.Success) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_logger.LogWarning("通道分页查询业务失败: {Body}", body); |
|
|
|
_logger.LogWarning("通道分页查询业务失败: {Body}", body); |
|
|
|
return new DaHApiResult<PageInfoDto> { Success = false, Code = "1007", Msg = $"通道分页查询失败" }; |
|
|
|
return new DaHApiResult<PageInfoDto> { Success = false, Code = "1007", Msg = $"通道分页查询失败" }; |
|
|
|
@ -212,6 +225,11 @@ namespace Video.DomainService |
|
|
|
// 2) Token:优先用入参;否则走缓存/获取(建议返回已带前缀的 "Bearer xxx") |
|
|
|
// 2) Token:优先用入参;否则走缓存/获取(建议返回已带前缀的 "Bearer xxx") |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
|
|
|
if (_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
_logger.LogWarning(" HLS实时流请求失败:token无效"); |
|
|
|
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/realtime"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/realtime"; |
|
|
|
|
|
|
|
|
|
|
|
@ -232,7 +250,7 @@ namespace Video.DomainService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
if (result == null || !result.Success || result.Code != "0") |
|
|
|
if (result == null || !result.Success) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_logger.LogWarning("实时流请求业务失败: {Body}", body); |
|
|
|
_logger.LogWarning("实时流请求业务失败: {Body}", body); |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1010", Msg = "实时流请求失败" }; |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1010", Msg = "实时流请求失败" }; |
|
|
|
@ -300,6 +318,7 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// rtsp录像回放 |
|
|
|
/// rtsp录像回放 |
|
|
|
|
|
|
|
/// (播放命令:ffplay -rtsp_transport tcp -i "rtsp://demo.weienergy.cn:15211/playback/pu/3?token=3")强制走tcp |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
|
/// <param name="dto"></param> |
|
|
|
/// <param name="dto"></param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
@ -316,6 +335,11 @@ namespace Video.DomainService |
|
|
|
// 先用缓存里的 token,不足5分钟过期再刷新(按你之前的口径来) |
|
|
|
// 先用缓存里的 token,不足5分钟过期再刷新(按你之前的口径来) |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
|
|
|
if (_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
_logger.LogWarning("rtsp录像回放:token无效"); |
|
|
|
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Playback/StartPlaybackByTime"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Playback/StartPlaybackByTime"; |
|
|
|
|
|
|
|
|
|
|
|
@ -337,12 +361,12 @@ namespace Video.DomainService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
if (result == null || !result.Success || result.Code != "0") |
|
|
|
if (result == null || !result.Success) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_logger.LogWarning("录像请求业务失败: {Body}", body); |
|
|
|
_logger.LogWarning("录像请求业务失败: {Body}", body); |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1008", Msg = "录像请求失败" }; |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1008", Msg = "录像请求失败" }; |
|
|
|
} |
|
|
|
} |
|
|
|
result.Data!.Url = result.Data.Url + "?token=" + token; |
|
|
|
result.Data!.Url = result.Data.Url.Replace(_configuration["DahuaAuth:TimeRootHost"], _configuration["DahuaAuth:TimeReplaceHost"]) + "?token=" + result.Data.Token; |
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
catch (Exception ex) |
|
|
|
@ -369,6 +393,11 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
|
|
|
if (_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
_logger.LogWarning("rtsp实时预览接口方式:token无效"); |
|
|
|
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/MTS/Video/StartVideo"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/MTS/Video/StartVideo"; |
|
|
|
|
|
|
|
|
|
|
|
@ -395,7 +424,7 @@ namespace Video.DomainService |
|
|
|
_logger.LogWarning("实时流请求业务失败: {Body}", body); |
|
|
|
_logger.LogWarning("实时流请求业务失败: {Body}", body); |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1010", Msg = "实时流请求失败" }; |
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1010", Msg = "实时流请求失败" }; |
|
|
|
} |
|
|
|
} |
|
|
|
result.Data!.Url = result.Data.Url + "?token=" + result.Data!.Token; |
|
|
|
result.Data!.Url = result.Data.Url.Replace(_configuration["DahuaAuth:RealRootHost"], _configuration["DahuaAuth:RealReplaceHost"]) + "?token=" + result.Data!.Token; |
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
catch (Exception ex) |
|
|
|
@ -415,6 +444,12 @@ namespace Video.DomainService |
|
|
|
{ |
|
|
|
{ |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
|
|
|
if (_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
_logger.LogWarning("下载:token无效"); |
|
|
|
|
|
|
|
return "下载地址无效"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return _configuration["DahuaAuth:Host"] + $"/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 _configuration["DahuaAuth:Host"] + $"/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}"; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|