一、现象
如下图所示,尝试在网页中播放超过6路http-flv流, 结果第7路无法播放。

在开发者工具中可以看到超过6个在线播放数目时,请求flv地址处于pending状态。

二、原因
导致该现象产生的原因为浏览器同域名请求的最大并发数限制。具体可以参考文章《浏览器同域名请求的最大并发数限制》、《flvjs是否限制了直播流的数量?》。
三、解决方法
方法一、使用nginx-http-live-module。nginx-http-live-module是nginx-http-flv-module的作者在其基础上开发的商用软件。该模块使用了HTTP/2.0,从而解决浏览器限制HTTP/1.x同源连接并发个数的问题。参考文章《使用HTTP/2.0解决浏览器限制同源HTTP/1.x连接并发个数的问题》。缺点:该模块不开源,不免费,如果想使用,得联系nginx-http-flv-module和nginx-http-live-module的作者。注意:不能简单的在编译nginx时加上http_v2_module和nginx-http-flv-module,这样开启http2.0是会失败的,参考文章《关于https的支持》。
方法二:使用ws-flv(websocket-flv),目前很火的流媒体服务器ZLMediaKit支持ws-flv。链接:https://github.com/xia-chu/ZLMediaKit/wiki/%E6%92%AD%E6%94%BEurl%E8%A7%84%E5%88%99
编译方法可以参考博文《windows下编译ZLMediaKit》。
|