video支持哪些视频格式(videojs 播放以及初始化)
目录
前言
一 、在vue中使用video.js
1.npm 安装 video.js
2.引入video.js
3.我这里是给它封装成了一个组件
引入video.js
props接收父组件传过来的值
触发销毁事件
关闭这个组件时触发video.js销毁
销毁创建初始化
最后的实现效果
前言
最近有个视频回放的功能 ,第三方给我这边rtmp协议的接口 ,rtmp协议在浏览器端是需要借助flash插件的 ,现在主流浏览器都不再支持flash了 ,火狐最后支持的版本是84.0.2 、谷歌的87.0.4270.0 ,这个可以上网搜一下 。除了这种方式还有常用三种协议格式 ,http-flv和http-Websoket协议格式前端可以用flv.js接收播放, hls协议原生video.js可以播放 ,如果是实时视频的话不推荐会有几秒延迟 ,回放的可以考虑在内 。说了这么多 ,由于一些原因 ,这个功能只能选择rtmp协议 。
一 、在vue中使用video.js
1.npm 安装 video.js
npm i video.js2.引入video.js
//全局引入在 main.js 中进行引入 import videojs from "video.js"; import "video.js/dist/video-js.css"; Vue.prototype.$video = videojs; //局部引入在页面引入 import videojs from "video.js" import "video.js/dist/video-js.css"3.我这里是给它封装成了一个组件
做了两个按钮手动触发和关闭 ,我这边需求是回放 ,点击播放时先显示时间弹框,点确认时再触发视频 ,这个按照个人需求不需要的话取video就行
template配置
<template> <div class="video-details" id="video-detailss"> <div class="video-mm" id="video-mm"> <video id="myvideo" class="video-js vjs-default-skin vjs-big-play-centered" preload="none"></video> </div> <div class="btns"> <el-button size="mini" @click="handlePlays">点击播放</el-button> <el-button size="mini" @click="handleClear">关闭销毁</el-button> </div> </div> </template>引入video.js
//这是个时间处理 import moment from moment import videojs from "video.js" import "video.js/dist/video-js.css"props接收父组件传过来的值
props: { liftInfoData: { type: Object, default: {}, }, },触发销毁事件
otherCloseVideo() { if (this.videoPlayers != null) { this.videoPlayers.pause() //关闭 this.videoPlayers.dispose();//销毁 this.videoPlayers = null } },关闭这个组件时触发video.js销毁
如果不销毁会一直占用你的浏览器内存 ,直到把浏览器崩溃
beforeDestroy() { this.otherCloseVideo() //调用上方的销毁事件 },销毁创建初始化
我这里的点播放的时候跳出选择时间节点的弹框,点确定时触发事件 ,先判断有无videoPlayers ,有就给他先销毁再创建 ,你也可以选择我下方的重置 ,一样可以达到切换视频的效果 。
handlePlay() { if (this.videoPlayers) { this.videoPlayers.dispose();//dispose该销毁是销毁的所有dom节点 $("#video-mm").html( <video id="myvideo" class="video-js vjs-default-skin vjs- big-play-centered" preload="none"></video>);//手动再创建 //这里隐藏掉的是重置播放器,重新选择地址 ,达到一个切换视频的效果 ,不太符合需求所以没有采用 // this.videoPlayers.reset(); // this.videoPlayers.src([ // { // type: application/x-mpegURL, // src:this.godSrc // }, // ]); // this.videoPlayers.load(); // this.videoPlayers.play(); } let that=this that.videoPlayers = videojs("myvideo", { //确定播放器是否具有用户可以与之交互的控件 。没有控件 ,启动视频播放的唯一方法是使用 autoplay属性或通过Player API 。 // controls: true, //自动播放属性,muted:静音播放 muted: true, autoplay: true, //建议浏览器是否应在<video>加载元素后立即开始下载视频数据 。 preload: "auto", //设置视频播放器的显示宽度(以像素为单位) width: "960px", //设置视频播放器的显示高度(以像素为单位) height: "522px", //这里面放的就是视频的地址 sources: [{ src: that.godSrc }], playbackRates: [0.5, 1, 1.5, 2] //倍速播放 }, function () { console.log("videojs播放器初始化成功"); }); that.videoPlayers.play(); },最后的实现效果
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!