技术概述
由于在自己的项目开发中,不想简单的使用video标签进行开发,在自身前端使用vue框架的前提下,我使用了vue的视频框架vue-video-player进行实现。
技术详述
安装插件
npm install vue-video-player -S
引用插件
//在main.js中引用
import VideoPlayer from ‘vue-video-player‘;
import ‘video.js/dist/video-js.css‘;
Vue.use(VideoPlayer);
具体使用
<template>
<div>
<video-player
class="video-player vjs-custom-skin"
ref="videoPlayer"
:playsinline="true"
:options="playerOptions"
:key=‘playerOptions.sources[0].src‘
></video-player>
</div>
</template>
<script>
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: false, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
sources: [
{
withCredentials: false,
type: "video/mp4", // 这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目
src: "",
},
],
controls: true,
hls: true,
poster:
"https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg", // 你的封面地址
width: 600, // 播放器宽度
height: 600,
notSupportedMessage: "此视频暂无法播放,请稍后再试", // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
controlBar: {
progressControl: true,
currentTimeDisplay: true,
timeDivider: true,
durationDisplay: true,
remainingTimeDisplay: true,
fullscreenToggle: true, // 全屏按钮
},
flash: { hls: { withCredentials: false } },
html5: { hls: { withCredentials: false } },
},
}
},
components: {
videoPlayer
},
created(){
//初始化视频src
},
</script>
<style scoped>
</style>
遇到的小问题以及解决:
在引用时候发现其css文件出现了一些问题,我进行了手动的修改,把播放按钮手动调整成了位于视频中间。其次是在使用created方法时候,我使用了loading组件进行页面的渲染前的加载状态,不会在出现莫名其妙的出现一个静态页面突然成为我们所需要的视频页面。最后是对于该模块的使用才发现只支持mp4,去看了下源码以及文档,发现看不出来个所以然,说是videojs出了些问题,后面发现videojs的文档写的太夸张(差)了,我*劝退。
总结
也算是第一次使用vue-video-player播放器,对于该播放器的使用还不算特别的理解,如果有机会的话在后续开发中会进一步的去体会以及了解,也还有一些不错的播放器推荐如flv等,后续会去研究下其他人所使用的如何利用该播放器做直播。是一次不错的学习过程。