岄. 2024-04-12 10:36 采纳率: 91.7%
浏览 2
已结题

如何实现摄像头通道号从1到4循环轮播?(标签-http)

如何实现海康摄像头通道号从1到4循环轮播,每十秒切换一次通道:

<script>

        $(function () {
            // 检查插件是否已经安装过
            var iRet = WebVideoCtrl.I_CheckPluginInstall();
            if (-1 == iRet) {
                alert("您还未安装过插件,双击开发包目录里的WebComponentsKit.exe安装!");
                return;
            }
        
            var oPlugin = {
                iWidth: 600,             // plugin width
                iHeight: 400             // plugin height
            };
        
            var oLiveView = {
                iProtocol: 1,            // protocol 1:http, 2:https
                szIP: "192.168.2.96",    // protocol ip
                szPort: "8081",            // protocol port
                szUsername: "admin",     // device username
                szPassword: "jsrh123456", // device password
                iStreamType: 1,          // stream 1:main stream  2:sub-stream  3:third stream  4:transcode stream
                iChannelID: 7,           // channel no
                bZeroChannel: false      // zero channel
            };
                
            // 初始化插件参数及插入插件
            WebVideoCtrl.I_InitPlugin(oPlugin.iWidth, oPlugin.iHeight, {
                bWndFull: true,//是否支持单窗口双击全屏,默认支持 true:支持 false:不支持
                iWndowType: 1,
                cbInitPluginComplete: function () {
                    WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin");
        
                    // 检查插件是否最新
                    if (-1 == WebVideoCtrl.I_CheckPluginVersion()) {
                        alert("检测到新的插件版本,双击开发包目录里的WebComponentsKit.exe升级!");
                        return;
                    }
        
                    // 登录设备
                    WebVideoCtrl.I_Login(oLiveView.szIP, oLiveView.iProtocol, oLiveView.szPort, oLiveView.szUsername, oLiveView.szPassword, {
                        success: function (xmlDoc) {
                            // 开始预览
                            var szDeviceIdentify = oLiveView.szIP + "_" + oLiveView.szPort;
                            setTimeout(function () {
                                WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {
                                    iStreamType: oLiveView.iStreamType,
                                    iChannelID: oLiveView.iChannelID,
                                    bZeroChannel: oLiveView.bZeroChannel
                                });
                            }, 1000);
                        }
                    });
                }
            });
        
            // 关闭浏览器
            $(window).unload(function () {
                WebVideoCtrl.I_Stop();
            });
        });
        
        </script>

我该怎么做

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-12 10:36
    关注

    引自免费微信小程序:皆我百晓生

    要实现海康摄像头通道号从1到4循环轮播,你可以通过JavaScript编写一个定时器,每隔10秒改变iChannelID的值并重新启动实时播放。首先,你需要在HTML中添加一个用于显示视频的容器,并确保已引入jQuery库。然后,修改提供的JavaScript代码,如下所示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Camera Loop</title>
        <!-- 引入jQuery -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    </head>
    <body>
        <div id="divPlugin" style="width:600px;height:400px;"></div>
        <script>
            $(function () {
                // ... (这里保持不变)
    
                var currentChannel = 1; // 当前通道号
                var maxChannels = 4; // 最大通道数
    
                // 定时器函数
                function startLoop() {
                    setInterval(function () {
                        // 循环通道号
                        currentChannel = (currentChannel % maxChannels) + 1;
    
                        // 更新并重启实时播放
                        oLiveView.iChannelID = currentChannel;
                        stopAndRestartPreview();
                    }, 10000); // 每10秒执行一次
                }
    
                // 停止并重启实时播放
                function stopAndRestartPreview() {
                    WebVideoCtrl.I_StopRealPlay(szDeviceIdentify);
                    setTimeout(function () {
                        WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {
                            iStreamType: oLiveView.iStreamType,
                            iChannelID: oLiveView.iChannelID,
                            bZeroChannel: oLiveView.bZeroChannel
                        });
                    }, 1000);
                }
    
                // 初始化插件参数及插入插件
                WebVideoCtrl.I_InitPlugin(oPlugin.iWidth, oPlugin.iHeight, {
                    // ... (这里保持不变)
    
                    cbInitPluginComplete: function () {
                        WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin");
    
                        // ... (这里保持不变)
    
                        // 开始预览
                        var szDeviceIdentify = oLiveView.szIP + "_" + oLiveView.szPort;
                        setTimeout(function () {
                            WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {
                                iStreamType: oLiveView.iStreamType,
                                iChannelID: oLiveView.iChannelID,
                                bZeroChannel: oLiveView.bZeroChannel
                            });
    
                            // 启动定时器
                            startLoop();
                        }, 1000);
                    }
                });
    
                // ... (这里保持不变)
            });
        </script>
    </body>
    </html>
    

    这段代码首先定义了当前通道号currentChannel和最大通道数maxChannels。然后,创建了一个名为startLoop的函数,它设置了一个定时器,每隔10秒更新currentChannel并将摄像头切换到下一个通道。

    stopAndRestartPreview函数负责停止当前的实时播放,并等待1秒后重新开始播放,此时会使用新的通道号。

    cbInitPluginComplete回调函数中,我们调用了startLoop函数来启动定时器。这样,当页面加载完成后,就会开始循环轮播摄像头通道。注意,这个示例中的代码假设你已经有了WebVideoCtrl对象及其方法,这是海康摄像头插件的一部分,你应该已经在你的环境中正确设置了这些。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月12日
  • 已采纳回答 4月12日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?