using Common.Shared.Application.DaHua; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using WeiCloud.Core.BaseModels; namespace Video.DomainService { /// /// todo:这块后续要做一个动态适配,只要修改配置文件就可以自由选择对接的厂商 /// public class RootVideoPlayBackService : IRootVideoPlaybackService { private readonly ILogger _logger; private readonly IConfiguration _cfg; private readonly IDahuaGeneralCtlService _dahuaGeneralCtlService; /// /// 构造函数 /// /// public RootVideoPlayBackService(ILogger logger, IConfiguration configuration, IDahuaGeneralCtlService dahuaGeneralCtlService) { _logger = logger; _cfg = configuration; _dahuaGeneralCtlService = dahuaGeneralCtlService; } #region 大华视频处理 /// /// 大华回放接口 /// /// /// /// public async Task> GetDaHRecordVideoUrl(PlaybackReqDto dto, string? ipaddress) { ApiResult result = new ApiResult() { Code = 200, Msg = "接口调用成功" }; var urlReult = await _dahuaGeneralCtlService.RecordVideoUrl(dto, ipaddress); if (!urlReult.Success) { result.Code = 500; result.Msg = urlReult.Msg; _logger.LogWarning("大华录像回放接口调用失败:{Msg}", urlReult.Msg); } result.Data = urlReult.Data; return result; } /// /// 大华实时 /// /// /// /// public async Task> GetRealtimeUrl(StreamReqDto dto, string? ipaddress) { ApiResult result = new ApiResult() { Code = 200, Msg = "接口调用成功" }; var urlReult = await _dahuaGeneralCtlService.RealtimeStreamUrl(dto, ipaddress); if (!urlReult.Success) { result.Code = 500; result.Msg = urlReult.Msg; _logger.LogWarning("大华实时视频接口调用失败:{Msg}", urlReult.Msg); } result.Data = urlReult.Data; return result; } /// /// 大华设备通道分页查询 /// /// /// public async Task> GetChannelCodes(ChannelPageReqDto dto) { ApiResult result = new ApiResult() { Code = 200, Msg = "接口调用成功" }; var pageResult = await _dahuaGeneralCtlService.GetChannelPageList(dto); if (!pageResult.Success) { result.Code = 500; result.Msg = pageResult.Msg; _logger.LogWarning("大华设备通道分页查询接口调用失败:{Msg}", pageResult.Msg); } result.Data = pageResult.Data; return result; } /// /// 大华登出 /// /// /// /// /// /// public async Task> Logout(string authorization, string? openId, int? userClient) { var result = new ApiResult(); var logoutResult = await _dahuaGeneralCtlService.Logout(authorization, openId, userClient); if (!logoutResult.Success) { result.Code = 500; result.Msg = logoutResult.Msg; _logger.LogWarning("大华登出接口调用失败:{Msg}", logoutResult.Msg); } else { result.Code = 200; result.Msg = "登出成功"; } return result; } /// /// rtsp实时预览接口方式 /// /// /// /// public async Task> RtspStartVideoUrl(StreamRtspReqDto dto, string? ipaddress) { ApiResult result = new ApiResult() { Code = 200, Msg = "接口调用成功" }; var urlReult = await _dahuaGeneralCtlService.RtspStartVideoUrl(dto, ipaddress); if (!urlReult.Success) { result.Code = 500; result.Msg = urlReult.Msg; _logger.LogWarning("大华实时视频接口调用失败:{Msg}", urlReult.Msg); } result.Data = urlReult.Data; return result; } /// /// rtsp录像回放 /// /// /// public async Task> RtspPlaybackByTime(RtspPlayBackReqDto dto, string? ipaddress) { ApiResult result = new ApiResult() { Code = 200, Msg = "接口调用成功" }; var urlReult = await _dahuaGeneralCtlService.RtspPlaybackByTime(dto, ipaddress); if (!urlReult.Success) { result.Code = 500; result.Msg = urlReult.Msg; _logger.LogWarning("大华录像回放接口调用失败:{Msg}", urlReult.Msg); } result.Data = urlReult.Data; return result; } /// /// 返回下载地址 /// /// /// public async Task Download(DownloadReqDto dto) { return await _dahuaGeneralCtlService.Download(dto); } #endregion 大华视频处理 } }