diff --git a/src/components/BootstrapBlazor.HikVision/BootstrapBlazor.HikVision.csproj b/src/components/BootstrapBlazor.HikVision/BootstrapBlazor.HikVision.csproj index 6f5a30de..a1f1393b 100644 --- a/src/components/BootstrapBlazor.HikVision/BootstrapBlazor.HikVision.csproj +++ b/src/components/BootstrapBlazor.HikVision/BootstrapBlazor.HikVision.csproj @@ -1,7 +1,7 @@ - 10.0.9 + 10.0.10 diff --git a/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.cs b/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.cs index 8106b140..824038e9 100644 --- a/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.cs +++ b/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.cs @@ -125,6 +125,11 @@ public partial class HikVisionWebPlugin /// public bool IsStartRecord { get; private set; } + /// + /// 获得 当前是否为分屏状态 + /// + public bool IsMultipleWindowType { get; private set; } + /// /// /// @@ -204,7 +209,7 @@ public async Task GetChannelList() /// public async Task StartRealPlay(int streamType, int channelId) { - if (IsLogin && !IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && !IsRealPlaying)) { IsRealPlaying = await InvokeAsync("startRealPlay", Id, streamType, channelId) ?? false; if (IsRealPlaying) @@ -228,7 +233,7 @@ private async Task TriggerStartRealPlay() /// public async Task StopRealPlay() { - if (IsRealPlaying) + if (IsMultipleWindowType || IsRealPlaying) { await InvokeVoidAsync("stopRealPlay", Id); IsRealPlaying = false; @@ -289,7 +294,7 @@ public async Task TriggerGetChannelList(HikVisionChannel channel) public async Task OpenSound() { var ret = false; - if (IsLogin && IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && IsRealPlaying)) { var code = await InvokeAsync("openSound", Id); ret = code == 100; @@ -305,7 +310,7 @@ public async Task OpenSound() public async Task CloseSound() { var ret = false; - if (IsLogin && IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && IsRealPlaying)) { var code = await InvokeAsync("closeSound", Id); ret = code == 100; @@ -322,7 +327,7 @@ public async Task CloseSound() public async Task SetVolume(int value) { var ret = false; - if (IsLogin && IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && IsRealPlaying)) { var code = await InvokeAsync("setVolume", Id, Math.Max(0, Math.Min(100, value))); ret = code == 100; @@ -337,7 +342,7 @@ public async Task SetVolume(int value) public async Task CapturePictureAndDownload(string? fileName = null, CancellationToken token = default) { var ret = false; - if (IsLogin && IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && IsRealPlaying)) { ret = await InvokeAsync("capturePictureAndDownload", token, Id, fileName); } @@ -351,7 +356,7 @@ public async Task CapturePictureAndDownload(string? fileName = null, Cance public async Task CapturePicture(string? fileName = null, CancellationToken token = default) { var ret = false; - if (IsLogin && IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && IsRealPlaying)) { ret = await InvokeAsync("capturePicture", token, Id, fileName); } @@ -365,7 +370,7 @@ public async Task CapturePicture(string? fileName = null, CancellationToke public async Task StartRecord() { var ret = false; - if (IsLogin && IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && IsRealPlaying)) { ret = await InvokeAsync("startRecord", Id); IsStartRecord = ret; @@ -380,7 +385,7 @@ public async Task StartRecord() public async Task StopRecord() { var ret = false; - if (IsLogin && IsRealPlaying) + if (IsMultipleWindowType || (IsLogin && IsRealPlaying)) { ret = await InvokeAsync("stopRecord", Id); if (ret) @@ -390,4 +395,15 @@ public async Task StopRecord() } return ret; } + + /// + /// 更改视口数量方法 + /// + /// 画面分割类型 1- 1*1,2- 2*2,3- 3*3,4- 4*4 (最大显示数值为4*4分割,数字超过4返回16分割) + /// + public async Task ChangeWindowNum(string iWndType) + { + IsMultipleWindowType = iWndType != "1"; + return await InvokeAsync("changeWndNum", Id, iWndType); + } } diff --git a/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.js b/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.js index d5fb6449..1481c11e 100644 --- a/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.js +++ b/src/components/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.js @@ -1,4 +1,4 @@ -import { init as initVision, login as loginVision, logout, startRealPlay, stopRealPlay, openSound, closeSound, setVolume, capturePicture, capturePictureAndDownload, startRecord, stopRecord, dispose as disposeVision } from '../hikvision.js'; +import { init as initVision, login as loginVision, logout, startRealPlay, stopRealPlay, openSound, closeSound, setVolume, capturePicture, capturePictureAndDownload, startRecord, stopRecord, changeWndNum, dispose as disposeVision } from '../hikvision.js'; import Data from '../../BootstrapBlazor/modules/data.js'; export async function init(id, invoke) { @@ -8,7 +8,8 @@ export async function init(id, invoke) { } Data.set(id, { - invoke + invoke, + iWndIndex: 0 }); const inited = await initVision(id); @@ -29,7 +30,7 @@ export async function login(id, ip, port, userName, password, loginType) { return logined; } -export { logout, startRealPlay, stopRealPlay, openSound, closeSound, setVolume, capturePicture, capturePictureAndDownload, startRecord, stopRecord } +export { logout, startRealPlay, stopRealPlay, openSound, closeSound, setVolume, capturePicture, capturePictureAndDownload, startRecord, stopRecord, changeWndNum } export function dispose(id) { disposeVision(id); diff --git a/src/components/BootstrapBlazor.HikVision/wwwroot/hikvision.js b/src/components/BootstrapBlazor.HikVision/wwwroot/hikvision.js index 8d190e54..92298a18 100644 --- a/src/components/BootstrapBlazor.HikVision/wwwroot/hikvision.js +++ b/src/components/BootstrapBlazor.HikVision/wwwroot/hikvision.js @@ -13,13 +13,11 @@ export async function init(id) { return false; } - const result = await initWindow(id); + const vision = Data.get(id); + const result = await initWindow(id, iWndIndex => vision.iWndIndex = iWndIndex); if (result.inited === false) { return false; } - - const vision = Data.get(id); - vision.iWndIndex = result.iWndIndex; vision.inited = true; const observer = new IntersectionObserver(() => { @@ -103,14 +101,14 @@ const removePlugin = () => { } } -const initWindow = id => { - const result = { inited: null, iWndIndex: -1 }; +const initWindow = (id, cb) => { + const result = { inited: null }; WebVideoCtrl.I_InitPlugin({ szBasePath: './_content/BootstrapBlazor.HikVision', bWndFull: true, iWndowType: 1, cbSelWnd: function (xmlDoc) { - result.iWndIndex = parseInt(getTagNameFirstValue(xmlDoc, "SelectWnd")); + cb(parseInt(getTagNameFirstValue(xmlDoc, "SelectWnd"))); }, cbDoubleClickWnd: function (iWndIndex, bFullScreen) { @@ -553,6 +551,29 @@ export async function stopRecord(id) { }); } +export async function changeWndNum(id, iWndType) { + const vision = Data.get(id); + if (!iWndType) { + iWndType = "1"; + } + + let ret = false; + try { + if ("1*2" === iWndType || "2*1" === iWndType) { + await WebVideoCtrl.I_ArrangeWindow(iWndType); + } + else { + const iType = parseInt(iWndType, 10); + await WebVideoCtrl.I_ChangeWndNum(iType); + } + ret = true; + } + catch (oError) { + console.log(oError); + } + return ret; +} + export function dispose(id) { const vision = Data.get(id); const { realPlaying, logined, observer } = vision;