我正在开发一个电子应用程序。它的主要目的是为 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(和许多其他浏览器)施加的限制。然后事情是:
- 当我不想使用它们时,有什么方法可以杀死已经打开的流?
- 如果没有,实现我想要的最好方法是什么?我的意思是,能够打开多个img而不用担心这个?
如果您想合作或提供帮助,这里是 repo 的链接。
提前致谢!