Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 绕过6下载限制观看多个视频_Javascript_Web_Streaming_Mjpeg - Fatal编程技术网

Javascript 绕过6下载限制观看多个视频

Javascript 绕过6下载限制观看多个视频,javascript,web,streaming,mjpeg,Javascript,Web,Streaming,Mjpeg,我必须编写一个能够同时观看多个实时流(视频监控摄像机)的网站 到目前为止,我正在使用MJPEG和JS来播放我的直播视频,而且效果很好。。。最多只能有6条流 事实上,大多数浏览器都有6个并行下载限制() 有人知道如何绕过这个限制吗?有小费吗 到目前为止,我的选择是: 增加限制(仅在Firefox上可能),但我不喜欢干扰我的用户浏览器设置 在服务器端将流合并到一个大流/视频中,这样我就可以一次下载一个。但是我不能单独处理每个流,不是吗 切换到JPEG流,在前端处理要刷新的图像队列(但如果我有15个

我必须编写一个能够同时观看多个实时流(视频监控摄像机)的网站

到目前为止,我正在使用MJPEG和JS来播放我的直播视频,而且效果很好。。。最多只能有6条流

事实上,大多数浏览器都有6个并行下载限制()

有人知道如何绕过这个限制吗?有小费吗

到目前为止,我的选择是:

  • 增加限制(仅在Firefox上可能),但我不喜欢干扰我的用户浏览器设置

  • 在服务器端将流合并到一个大流/视频中,这样我就可以一次下载一个。但是我不能单独处理每个流,不是吗

  • 切换到JPEG流,在前端处理要刷新的图像队列(但如果我有15个流,恐怕我会在请求时崩溃客户端浏览器(15x25images/s)

我还有其他选择吗?是否有技巧或库,例如,我可以将我的流合并到一个大管道中(因此每次下载1个),但可以在前面的代码中单独访问每一个

我确信我是在正确的stack exchange站点上问这个问题的,如果我不是,请告诉我;-)

为什么不在一个连接中进行流式传输(如果您可以控制服务器端,并且该线路是可用的)?您需要在一个连接中发送/传输所有15个流(不是一个大流),因此每个块的头必须与相应的流id匹配。
阅读更多:
这里有更深入的内容:

使用http1.0/1.1,您在这种情况下运气不佳-当时开发的一个视频或mp3文件已经很繁重(解决方案,例如torrent库,但不可靠,除了下载/流媒体之外,不适合大多数情况)。对于您的交互式场景,http2是一条可行的道路。

正如Codebreaker007所说,我也更喜欢http2流多路复用。它是专门为解决并发连接过多的问题而设计的

然而,如果你坚持使用HTTP1.x,我并不认为你完全是运气不佳。可以通过某种方式合并流,以便客户端可以对各个流进行分解和操作,尽管这需要更多的工作,而且您可能不得不求助于客户端轮询

想法很简单-定义一个非常简单的数据结构:


[
streamCount
len1
data1
len2
data2
]

字节0~3:
32位无符号整数
合并流的数目

字节4~7:
32位无符号整数
流1的数据长度

字节8~8+len1:
二进制
流1的数据

字节8+len1+1~8+len1+4:流2的数据长度

每个
数据
的长度允许为0,在这种情况下,处理方式没有区别


在客户端,持续轮询以获取更多数据,需要这种数据结构。然后对其进行分解,并将数据传输到各个流的缓冲区。然后您仍然可以单独操作组件流

在服务器端,将各个组件流中的数据缓存到内存中。然后在每个响应中清空缓存,组成此数据结构并发送



但同样,这是一种石膏溶液。我也建议使用HTTP2流,但这是一个合理的退路。

谢谢,这正是我想要的。我认为http2将是一个完美的解决方案,我只需要找到一个前端库来处理它。是的,谢谢你指出这个替代方案!我认为http2在我将尝试的方式:-)@cyqsimon你是对的,但我没有找到一个库支持这种交互(!)场景,也没有在做其他事情的服务器上以交互方式实现它。如果它是一个视频流,那么它只能以一种方式工作,所以,但在其他事情之上?