一、前言

现在谷歌浏览器由于是同源设置,最大只能播放6路视频。如果是火狐浏览器还好,可以更改这个同源支持的路数,但是如果是谷歌的话就难受了,因为这个参数是写死到源码中的,所以要实现播放多路视频还需要走一些其他的方法。

二、思路

既然是同源策略,那么哪些会被视为同源,哪些又被视为非同源呢?网络上的一些教程解决方案都太复杂,要么就是引入新的技术,要么还得nginx编译支持http2.0技术,我搞java的怎么有那么多的精力去搞这种c语言编译?
非同源:不同的ip或者是端口不同即可,那我们就从端口不同入手即可。

三、教程

现在网页播放谷歌已经默认不支持flash了,因此播放只能通过http-flv播放,正是通过该播放模式,才会有6路限制。既然同学们采用了http-flv的播放方式,肯定会用到nginx。下面是我nginx的播放配置,浏览器访问是通过这个ip:8070/live/xxxx来播放这个视频。

server {
        listen       8070;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /live {
            flv_live on; #打开HTTP播放FLV直播流功能
            chunked_transfer_encoding on; #支持'Transfer-Encoding: chunked'方式回复
			#add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
			add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
            add_header 'Access-Control-Allow-Origin' '*'; #添加额外的HTTP头
            add_header 'Access-Control-Allow-Credentials' 'true'; #添加额外的HTTP头
        }
    }

但是由于谷歌的同源设置,这里就有问题了,ip:8070只能最大支持6次,而不是采用的flv.js出了问题。
这时候就要搞一些骚操作,我给这个8070增加了一个代理8061端口,也就是说通过8061端口也能访问到8070的视频。

server {
		listen		8061;
		server_name 192.168.2.200;
		location /{
			root html;
			proxy_pass http://192.168.2.200:8070;
			index index.html index.htm;
		}
	
	}

如果想要支持100路都是可以的,只要你服务器带宽够,这样又不引入其他的技术,是不是美滋滋?

后台或者前端拼接视频地址的时候就需要判断一下
判断一下响应给前端的8070端口是否大于6,如果大于6就使用备用端口8061
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐