LiveWall

监控摄像头的多路宫格墙,按 4 / 6 / 9 / 12 / 16 宫格编排多个 LivePlayer 磁贴,支持整墙静音、增删与单路全屏。

最后更新

说明

LivePlayer 的多路编排组件,把若干摄像头源(CameraSource:名称 / 地址 / 协议)按 4 / 6 / 9 / 12 / 16 宫格统一布局,每格内嵌一个紧凑磁贴(Dense 模式的 LivePlayer),画面铺满所在格、保持干净。顶部工具条可切换宫格布局、一键整墙静音 / 取消静音,并在运行时添加或移除摄像头:实际路数不足宫格位时按 BlankFill 用虚线空白格补齐以维持均匀,多于宫格位时自动分页(上一页 / 下一页)。取流协议、低延迟、断流重连次数、画幅比例等经同名参数下发给每一路。悬停磁贴才浮现该路的播放 / 静音 / 抓拍 / 全屏 / 连接·停止控件,单击画面或点全屏按钮即把这一路放大到全屏(原生 Fullscreen API,Esc 退出后图标自动同步),断流报错的那一路整格描红高亮以便一眼定位问题源。抓拍经 OnSnapshot 回推 CameraSnapshot(携带摄像头与 JPEG dataURL),可据此上传取证。依赖与限制同 LivePlayer:跨域流需服务端返回 CORS 头,桌面 WebView2 宿主可能对相机与全屏另有权限限制。

常见能力:

  • 4 / 6 / 9 / 12 / 16 宫格一键切换,列数自适应
  • 每格内嵌 Dense 磁贴,悬停才浮现播放 / 静音 / 抓拍 / 全屏 / 停止
  • 单击画面或全屏按钮把单路放大到全屏,Esc 退出图标自动同步
  • 整墙统一静音 / 取消静音,逐路仍可单独控制
  • 运行时添加 / 移除摄像头,Items 静态传入 + 内部接管
  • 路数不足补空白格保持均匀,超出宫格自动分页
  • 断流那一路整格描红高亮,一眼定位问题源
  • 抓拍回推 CameraSnapshot(摄像头 + dataURL),协议 / 低延迟 / 重连参数下发每路

用法

<LiveWall Title="园区监控" Items="@cams" Grid="9" Muted="true" AutoStart="true"
          LowLatency="true" Retry="2" OnSnapshot="OnSnap" />

@code {
    // 名称 / 流地址 / 协议;Grid 支持 4 / 6 / 9 / 12 / 16,超出自动分页、不足补空位。
    var cams = new List<CameraSource>
    {
        new("前门 01", "https://nvr/1.m3u8", "hls"),
        new("后门 02", "https://nvr/2.flv", "flv"),
        new("车库 03", "whep://nvr/3"),
    };
    void OnSnap(CameraSnapshot s) => Upload(s.Camera.Name, s.Data);
}

API 参数

参数 类型 默认值 说明
AllowEdit bool true 是否允许运行时增删摄像头(悬停出现删除角标、工具条出现添加)。
Aspect string "16 / 9" 每格画幅比例(默认 16:9)。
AutoStart bool true 磁贴就绪后自动起流(默认开)。多路同开对带宽 / 解码压力较大,可按需关闭改手动逐路连接。
BlankFill bool true 实际路数不足宫格位时是否用空白格补齐。
Grid int 4 宫格布局:4 / 6 / 9 / 12 / 16(默认 4)。
Items IEnumerable<CameraSource> null 摄像头列表(初始)。运行时增删只作用于内部副本,不回写调用方集合。
LowLatency bool false 下发给每路的低延迟模式。
MaxCameras int 64 可容纳的最大路数(添加时的软上限,默认 64)。
Muted bool true 整墙初始静音(默认开,规避自动播放策略与回环啸叫)。
OnSnapshot EventCallback<CameraSnapshot> — 事件 某一路抓拍完成回调,携带摄像头与 JPEG dataURL。
Retry int 3 下发给每路的断流重连次数。
ShowToolbar bool true 是否显示顶部工具条(布局切换 / 整墙静音 / 添加)。
Title string null 墙标题(显示在工具条左侧,属数据不做本地化)。
Visible bool true 取得或设置组件是否可见,默认为false。
VisibleChanged EventCallback<bool> — 事件 取得或设置组件可见性变化时的回调事件。
Class string null 取得或设置组件的CSS类名,用于自定义样式。
Disabled bool false 取得或设置组件是否禁用,默认为false。
Style string null 取得或设置组件的内联样式,用于自定义样式。

所有组件均继承 BaseComponent,除上表参数外还支持 Class、Style、Disabled、Visible。

微信公众号二维码 扫码关注公众号
QQ 交流群二维码 扫码加入 QQ 群