当前位置:   article > 正文

如何在vue项目中引入video.js插件_vue引入video.js

vue引入video.js

借鉴了不少文章,照着来净报错,恼了自己给自己留一篇绝不报错的!

参考文章:https://www.jianshu.com/p/8b8023c7ed37

一、安装

 $ npm install video.js

二、main.js全局引入 

  1. // 引入video.js
  2. import Videojs from 'video.js'
  3. import 'video.js/dist/video-js.css'
  4. Vue.prototype.$video = Videojs

三、组件中的使用

结构部分:

  1. <template>
  2. <!-- 顶部banner图 -->
  3. <header>
  4. <!-- 如果有视频,不展示banner图,显示视频框 -->
  5. <img :src="aggregationData.BannerImage" v-show="isBanner" alt="">
  6. <div v-show="isVideo">
  7. <video
  8. id="myVideo"
  9. class="video-js vjs-big-play-centered vjs-fluid"
  10. controls
  11. preload="auto"
  12. width="100%"
  13. height="100%"
  14. :poster="aggregationData.BannerImage"
  15. >
  16. <source
  17. type="video/mp4"
  18. :src="aggregationData.BannerVideo"
  19. >
  20. </video>
  21. </div>
  22. </header>
  23. </template>

数据部分:

  1. <script>
  2. /* eslint-disable */
  3. export default {
  4. data() {
  5. return {
  6. isBanner:true,// 是否显示banner图
  7. isVideo:true,// 是否显示视频
  8. }
  9. },
  10. mounted() {
  11. this.getData()
  12. //console.log(this) //vue的原型链上有$video方法
  13. //console.log(this.$video)
  14. },
  15. methods: {
  16. initVideo() { //此处初始化的调用,我放在了获取数据之后的方法内,而不是放在钩子函数mounted
  17. //页面dom元素渲染完毕,执行回调里面的方法
  18. this.$nextTick(() => {
  19. let myPlayer = this.$video(document.getElementById('myVideo'), {
  20. //确定播放器是否具有用户可以与之交互的控件。没有控件,启动视频播放的唯一方法是使用autoplay属性或通过Player API。
  21. controls: true,
  22. //自动播放属性,muted:静音播放
  23. autoplay: false,
  24. //建议浏览器是否应在<video>加载元素后立即开始下载视频数据。
  25. preload: "auto",
  26. //设置视频播放器的显示宽度(以像素为单位)
  27. // width: "800px",
  28. //设置视频播放器的显示高度(以像素为单位)
  29. // height: "400px",
  30. controlBar:{
  31. playToggle:true
  32. }
  33. });
  34. })
  35. }
  36. }

注意事项:

1.videojs的初始化方法的调用,是在获取接口数据的方法内部,而非在mounted;

2.避免初始化不彻底,导致获取不到相对应的媒体资源;选择采用this.$nextTick()方法,利用其中的回调函数,使得DOM渲染刷新后再次获取video所需的相关数据,促使再次视图更新

3.this.$video和main.js中Vue.prototype.$video = Videojs 相呼应,不能写错哦!

四、默认样式的修改

参考文章:https://www.awaimai.com/2053.html

考虑到层级,在index.less中做修改,同时,采用了!important

  1. .video-js{
  2. width: 120%!important;
  3. height: 100%!important;
  4. }
  5. .video-js .vjs-big-play-button {
  6. font-size: 3em;
  7. line-height: 42px!important;
  8. height: 50px!important;
  9. width: 50px!important;
  10. display: block;
  11. position: absolute!important;
  12. left:50%!important;
  13. top:50%!important;
  14. margin-top:-25px!important;
  15. margin-left:-25px!important;
  16. padding: 0;
  17. cursor: pointer;
  18. opacity: 1;
  19. border: 0.06666em solid #fff;
  20. background-color: #2B333F;
  21. background-color: rgba(43, 51, 63, 0.7);
  22. border-radius: 50%!important;
  23. -webkit-transition: all 0.4s;
  24. transition: all 0.4s;
  25. }
  26. .vjs-paused .vjs-big-play-button,
  27. .vjs-paused.vjs-has-started .vjs-big-play-button {
  28. display: block!important;
  29. }
  30. .myVideo-dimensions {
  31. width: 100%!important;
  32. height: 100%!important;
  33. display: block!important;
  34. }
  35. .vjs-poster{
  36. background-size: 100% 100%!important;
  37. }

css部分可以按照自己的需要来改,我写的不够简约,应该有更巧妙的办法吧!希望你可以提出自己意见来!

五,最终呈现出的效果:

 控件部分:参考文章:https://segmentfault.com/a/1190000018914486?utm_source=tag-newest

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/79555
推荐阅读
相关标签
  

闽ICP备14008679号