1.node服务端
数据流传输,可在线缓存
//获取参数 var params=urldeal.parse(req.url,true).query const ROOT_PATH = process.cwd();//必须使用绝对路径,使用相对路径会直接下载文件 let path =ROOT_PATH+params.url; let stat = fs.statSync(path); //获取文件信息 let fileSize = stat.size; let range = req.headers.range; if (range) { //有range头才使用206状态码 let parts = range.replace(/bytes=/, "").split("-"); let start = parseInt(parts[0], 10); let end = parts[1] "color: #ff0000">2.vue客户端1.安装video-player插件
cnpm install vue-video-player --save2.组件中引用
<video-player class="video-player vjs-custom-skin" ref="videoPlayer" :playsinline="true" :options="playerOptions" ></video-player>3.调用的data中的数据
data() { return { // 视频播放 playerOptions: { playbackRates: [0.5, 1.0, 1.5, 2.0], //播放速度 autoplay: false, //如果true,浏览器准备好时开始回放。 muted: false, // 默认情况下将会消除任何音频。 loop: false, // 导致视频一结束就重新开始。 preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持) language: 'zh-CN', aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3") fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。 sources: [{ type: "", //src: require('@/assets/'+this.vurl)//url地址 src: 'http://localhost:10086/videos"color: #ff0000">附录:vue+flvjs播放直播流FLV,分页时如何断开之前直播流解决办法使用flvjs库同时播放flv文件,需要分页发现,之前直播流没有断开,很影响性能,网上查阅借鉴下边代码实现断开上页直播流
// 销毁播放器实例 closePlayer() { if (this.player.length > 0) { this.player.forEach((item) => { item.destroy(true); item.off('ended', function () {}); item.off('error', function () {}); item = null; }); this.player = []; } }, // 初始化播放器 initPlayer(id, url, img) { let doms = document.getElementById(id); doms.innerHTML = ''; this.player.push( new FlvPlayer({ id: id, url: url, poster: img, isLive: true, autoplay: true, volume: id == 'videos0' "color: #ff0000">总结