增加大华设备对云台移动、缩放、聚集、光圈、校时、重启的支持
增加海康、大华对预置点的支持
This commit is contained in:
@@ -19,7 +19,7 @@ namespace SHH.CameraSdk;
|
||||
/// <para>✅ 4. [Feat C] 性能优化:在解码回调中使用 <see cref="Monitor.TryEnter"/> 竞争锁,有效规避在设备断开瞬间可能产生的驱动层死锁</para>
|
||||
/// </summary>
|
||||
public class HikVideoSource : BaseVideoSource,
|
||||
IHikContext, ITimeSyncFeature, IRebootFeature, IPtzFeature
|
||||
IHikContext, ITimeSyncFeature, IRebootFeature, IPtzFeature, IPresetFeature
|
||||
{
|
||||
#region --- 1. 静态资源与全局路由 (Static Resources) ---
|
||||
|
||||
@@ -43,6 +43,7 @@ public class HikVideoSource : BaseVideoSource,
|
||||
private readonly HikTimeSyncProvider _timeProvider;
|
||||
private readonly HikRebootProvider _rebootProvider;
|
||||
private readonly HikPtzProvider _ptzProvider;
|
||||
private readonly HikPresetProvider _presetProvider;
|
||||
|
||||
// SDK 句柄与资源
|
||||
private int _userId = -1; // SDK 登录句柄
|
||||
@@ -68,9 +69,7 @@ public class HikVideoSource : BaseVideoSource,
|
||||
|
||||
#region --- 3. 构造函数 (Constructor) ---
|
||||
|
||||
/// <summary>
|
||||
/// 海康视频源实现
|
||||
/// </summary>
|
||||
/// <summary>海康视频源实现</summary>
|
||||
/// <param name="config"></param>
|
||||
public HikVideoSource(VideoSourceConfig config) : base(config)
|
||||
{
|
||||
@@ -78,6 +77,7 @@ public class HikVideoSource : BaseVideoSource,
|
||||
_timeProvider = new HikTimeSyncProvider(this);
|
||||
_rebootProvider = new HikRebootProvider(this);
|
||||
_ptzProvider = new HikPtzProvider(this);
|
||||
_presetProvider = new HikPresetProvider(this);
|
||||
|
||||
// Modified: [Fix GC Crash] 移除此处的 new REALDATACALLBACK
|
||||
// 直接使用构造函数初始化的 _realDataCallBack,保证委托地址在整个对象生命周期内不变
|
||||
@@ -89,15 +89,11 @@ public class HikVideoSource : BaseVideoSource,
|
||||
|
||||
#region --- 4. 接口实现:IHikContext & Features (Interface Impls) ---
|
||||
|
||||
/// <summary>
|
||||
/// 获取登录句柄
|
||||
/// </summary>
|
||||
/// <summary>获取登录句柄</summary>
|
||||
/// <returns></returns>
|
||||
public int GetUserId() => _userId; // 暴露父类或私有的 _userId
|
||||
|
||||
/// <summary>
|
||||
/// 获取设备IP
|
||||
/// </summary>
|
||||
/// <summary>获取设备IP</summary>
|
||||
/// <returns></returns>
|
||||
public string GetDeviceIp() => Config.IpAddress;
|
||||
|
||||
@@ -107,22 +103,16 @@ public class HikVideoSource : BaseVideoSource,
|
||||
/// <returns></returns>
|
||||
public Task<DateTime> GetTimeAsync() => _timeProvider.GetTimeAsync();
|
||||
|
||||
/// <summary>
|
||||
/// 设置设备时间
|
||||
/// </summary>
|
||||
/// <summary>设置设备时间</summary>
|
||||
/// <param name="time"></param>
|
||||
/// <returns></returns>
|
||||
public Task SetTimeAsync(DateTime time) => _timeProvider.SetTimeAsync(time);
|
||||
|
||||
/// <summary>
|
||||
/// 重启设备
|
||||
/// </summary>
|
||||
/// <summary>重启设备</summary>
|
||||
/// <returns></returns>
|
||||
public Task RebootAsync() => _rebootProvider.RebootAsync();
|
||||
|
||||
/// <summary>
|
||||
/// PTZ 控制
|
||||
/// </summary>
|
||||
/// <summary>PTZ 控制</summary>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="stop"></param>
|
||||
/// <param name="speed"></param>
|
||||
@@ -130,9 +120,7 @@ public class HikVideoSource : BaseVideoSource,
|
||||
public Task PtzControlAsync(PtzAction action, bool stop, int speed = 4)
|
||||
=> _ptzProvider.PtzControlAsync(action, stop, speed);
|
||||
|
||||
/// <summary>
|
||||
/// PTZ 步长
|
||||
/// </summary>
|
||||
/// <summary>PTZ 步长</summary>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="durationMs"></param>
|
||||
/// <param name="speed"></param>
|
||||
@@ -140,6 +128,18 @@ public class HikVideoSource : BaseVideoSource,
|
||||
public Task PtzStepAsync(PtzAction action, int durationMs, int speed = 4)
|
||||
=> _ptzProvider.PtzStepAsync(action, durationMs, speed);
|
||||
|
||||
/// <summary>跳转到预置点</summary>
|
||||
public Task GotoPresetAsync(int presetIndex)
|
||||
=> _presetProvider.GotoPresetAsync(presetIndex);
|
||||
|
||||
/// <summary>设置/保存当前位置为预置点</summary>
|
||||
public Task SetPresetAsync(int presetIndex)
|
||||
=> _presetProvider.SetPresetAsync(presetIndex);
|
||||
|
||||
/// <summary>删除预置点</summary>
|
||||
public Task RemovePresetAsync(int presetIndex)
|
||||
=> _presetProvider.RemovePresetAsync(presetIndex);
|
||||
|
||||
#endregion
|
||||
|
||||
#region --- 5. 生命周期重写 (Lifecycle Overrides) ---
|
||||
|
||||
Reference in New Issue
Block a user