flvjs源码地址:https://github.com/bilibili/flv.js
下载下来后,使用进入项目根目录运行
npm install # install dev-dependences
npm install -g gulp # install build tool
gulp release # packaged & minimized js will be emitted in dist folder
如果遇到flvjs本身的问题需要修改源码,可以去issues里找解决方案,比如我遇到的一个,# 播放器在destroy后仍然会下载数据,这个时候就需要修改源码然后运行上面的命令(运行过程中可能会遇到报错,是由于本机的nodejs版本太高,重装旧版本覆盖后即可)。
运行完成在根目录会有一个dist文件夹,里面有flv.js、flv.min.js,可以直接丢到项目下使用。
简单的使用方式,就是先在页面中添加一个video标签,
<video id="video1" style="object-fit: fill;" muted></video>
muted表示静音,且会自动播放。
object-fit:fill可以让视频自动填充容器(有浏览器版本限制,部分浏览器不识别)。
然后新建一个方法
function videoInit(id, src){
var self=this;
self.src=src;
self.id=id;
// 设置属性 type播放类型 url播放链接 isLive是否为直播流 hasAudio是否播放声音 hasVideo是否播放视频 enableStashBuffer开启播放器端缓存
// enableWorker浏览器端开启flvjs的worker,多进程运行flvjs
self.flvPlayer = flvjs.createPlayer({type: 'flv',url:src,isLive: true,hasAudio: false,hasVideo: true,enableWorker: true, enableStashBuffer: false},{});
self.flvPlayer.attachMediaElement(document.getElementById(id));
self.flvPlayer.load();
self.flvPlayer.play();
return self.flvPlayer;
}
只需要调用该方法,传入id(video控件的id)以及src(播放链接,可以是一个具体的视频链接,也可以是对后台的长连接请求地址,后台实时写流给前台播放)。
然后调用时赋值给一个变量
flvjs的api文档:https://github.com/bilibili/flv.js/blob/master/docs/api.md
var player = videoInit("video1","xxx");
想要销毁该播放器,就调用该播放器实例的unload、destroy方法。
if(null != player){
player.unload();
player.destroy();
player = null;
}
当一个页面需要播放多个视频时,如果这些视频全部来自同一域名地址,保持长连接时需要注意总请求数不能超过6个。因为大部分浏览器限制对同一域名的请求同时只能保持6个,具体可见:
火狐浏览器可以自定义该值:
当请求数超过6个时,后面所有的请求都会被阻塞,等待前面的请求响应结束后才会被服务器接收。
控件样式调整
被公司要求调样式,对我来说比较头疼233,记录下
需要4个分屏,每个边框为2px,2×2的形式摆放,此外还有选中时的样式(边框颜色)
样式设置如下
.videoPlay4{width:calc(50% - 4px);height:calc(50% - 4px);float:left; border: 2px solid transparent;}
.videoSelect{border: 2px solid #ffde5c;}
部分浏览器不支持flvjs,可以使用
flvjs.isSupported()
判断
return 0;