摄像头播放后,增加分辨率的显示

This commit is contained in:
2025-12-26 18:55:04 +08:00
parent e98059fd30
commit 108c97924f
7 changed files with 232 additions and 93 deletions

View File

@@ -293,51 +293,40 @@ public class CamerasController : ControllerBase
return BadRequest("Device implies no controller");
}
// 1. 获取单个设备详情(用于编辑回填)
[HttpGet("{id}")]
public IActionResult GetDevice(int id)
{
var cam = _manager.GetDevice(id);
if (cam == null) return NotFound();
return Ok(cam.Config); // 返回原始配置对象
}
///// <summary>
///// 5. 注册/更新进程的流需求 (A/B/C/D 场景核心)
///// </summary>
///// <remarks>
///// 示例场景:
///// - 主进程配置(B): { "appId": "Main_Config", "displayFps": 25, "analysisFps": 0 }
///// - AI进程(C): { "appId": "AI_Core", "displayFps": 0, "analysisFps": 5 }
///// </remarks>
//[HttpPost("{id}/subscriptions")]
//public IActionResult UpdateSubscription(long id, [FromBody] SubscriptionDto sub)
// 2. 更新设备(保存功能)
[HttpPut("{id}")]
public async Task<IActionResult> UpdateDevice(int id, [FromBody] VideoSourceConfig config)
{
// 核心逻辑:先停止旧设备 -> 更新配置 -> 重新添加到容器 -> 如果之前在运行则重新启动
await _manager.UpdateDeviceAsync(id, config);
return Ok();
}
// 3. 清除特定设备的日志
[HttpDelete("{id}/logs")]
public IActionResult ClearLogs(int id)
{
var cam = _manager.GetDevice(id);
cam?.ClearAuditLogs();
return Ok();
}
//// 4. 抓图诊断
//[HttpGet("{id}/capture")]
//public async Task<IActionResult> Capture(int id)
//{
// var device = _manager.GetDevice(id);
// if (device == null) return NotFound();
// // 逻辑转换:将 "显示帧" 和 "分析帧" 映射到底层控制器的注册表
// // 1. 处理显示需求
// string displayKey = $"{sub.AppId}_Display";
// if (sub.DisplayFps > 0)
// {
// // 告诉控制器:这个 App 需要 X 帧用于显示
// device.Controller.Register(displayKey, sub.DisplayFps);
// }
// else
// {
// // 如果不需要,移除注册
// device.Controller.Unregister(displayKey);
// }
// // 2. 处理分析需求
// string analysisKey = $"{sub.AppId}_Analysis";
// if (sub.AnalysisFps > 0)
// {
// // 告诉控制器:这个 App 需要 Y 帧用于分析
// device.Controller.Register(analysisKey, sub.AnalysisFps);
// }
// else
// {
// device.Controller.Unregister(analysisKey);
// }
// // 运维审计
// device.AddAuditLog($"更新订阅策略 [{sub.AppId}]: Display={sub.DisplayFps}, Analysis={sub.AnalysisFps}");
// return Ok(new { Message = "订阅策略已更新", DeviceId = id });
// var cam = _manager.GetDevice(id);
// if (cam == null) return NotFound();
// var bytes = await cam.CaptureCurrentFrameAsync();
// return File(bytes, "image/jpeg");
//}
}