0

我正在开发一个电子应用程序。它的主要目的是为 ZoneMinder 展示一个更好的 GUI。

我正在使用 API 和其他东西来访问数据,问题是,直播有一种使用直接访问 cgi 的方法,当你打开超过 6 个流时,下一个流将失败。

我想要一个主视频流(带有选定的监视器),在它下面有一个迷你视频屏幕,可以预览同一组中的其他监视器。

我尝试了许多公式,在任何地方寻找任何解决方案等,但没有运气。

绘制主监视器img的部分代码是:

   var zm_main_img = new Image();
    zm_main_img.setAttribute('class', 'video-main app-draggable');
    var zm_img_src = zm_url_base + "/cgi-bin/nph-zms?scale=100&width=" + main_width + "px&height=" + main_height + "px&mode=jpeg&maxfps=" + zm_fpsm + "&monitor=" + monitor + "&token=" + zm_token + "&connkey=" + zm_connkey;
    zm_main_img.src = zm_img_src;
    zm_main_img.setAttribute('id', 'v_main_x');
    video_main.appendChild(zm_main_img);

请注意,流是 mjpeg。当我尝试使用“简单”模式时,即只有一张图像(没有 mjpeg),它可以工作,但是...... 完全没有视频输入。我还尝试检查是否加载了子视频提要以再次重新加载 src,但我遇到了严重的问题,因为我必须将其设置为动态内容(某些组有不同数量的监视器)。

当我使用代码检查器时,我可以看到打开的多个连接,在第 6 个连接之后,我可以在“待处理”中看到很多。经过数小时的抱怨后,我发现这是 Chrome(和许多其他浏览器)施加的限制。然后事情是:

  1. 当我不想使用它们时,有什么方法可以杀死已经打开的流?
  2. 如果没有,实现我想要的最好方法是什么?我的意思是,能够打开多个img而不用担心这个?

如果您想合作或提供帮助,这里是 repo 的链接。

提前致谢!

4

0 回答 0