为什么会用vue-video-player? 
1. 我搭建的流媒体服务的管理页面内的播放器就是用的videoJs(vue-video-player是依据videoJs封装的),使用之后感觉良好。 
2. 百度输入“vue video”,vue-video-player就在顶部。(哈哈,就是这么随意) 
3. 当然还是看了demo页,支持的协议齐全。 
4. 虽然vue-video-player的github上还有些issues没有关闭,但是自己觉得守着videoJs强大的库与万千使用者,总能解决问题。

  • 安装依赖
    npm install vue-video-player --save

     

  • 引入样式  (注:引入的插件样式最好放在最上面,否则可能无法修改插件样式)
    require('video.js/dist/video-js.css')   // 这个是videoJs的样式
    require('vue-video-player/src/custom-theme.css') // 这个是vue-video-player的样式
    //因为考虑到我其他业务组件可能也会用到视频播放,所以就放在了main.js内

     

  • 把VueVideoPlayer导入并挂在到vue上
    import VideoPlayer from 'vue-video-player'
    Vue.use(VideoPlayer);

     

  • 编写业务组件 myPlayer.vue
    <template>
      <div class="container">
        <div class="player">
          <video-player  class="video-player vjs-custom-skin"
                         ref="videoPlayer"
                         :playsinline="true"
                         :options="playerOptions"
                         @play="onPlayerPlay($event)"
                         @pause="onPlayerPause($event)"
          >
          </video-player>
        </div>
      </div>
    </template>
    
    <script>
    import { videoPlayer } from 'vue-video-player';
    export default {
      data () {
        return {
          playerOptions: {
    //        playbackRates: [0.7, 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: "application/x-mpegURL",
              src: "video.m3u8" //你的m3u8地址(必填)
            }],
            poster: "poster.jpg", //你的封面地址
            width: document.documentElement.clientWidth,
            notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
            controlBar: {
              timeDivider: true,
              durationDisplay: true,
              remainingTimeDisplay: false,
              fullscreenToggle: true  //全屏按钮
            }
          }
        }
      },
      components: {
        videoPlayer
      },
      methods: {
        onPlayerPlay(player) {
          alert("play");
        },
        onPlayerPause(player){
          alert("pause");
        },
      },
      computed: {
        player() {
          return this.$refs.videoPlayer.player
        }
      }
    }
    </script>
    
    <!-- Add "scoped" attribute to limit CSS to this component only -->
    <style type="text/css" scoped>
      .container {
        background-color: #efefef;
        min-height: 100%;
      }
    </style>

    注意: 
     
    1. 根据videoJS Api修改属性。

  • 地址: https://docs.videojs.com/tutorial-options.html#preload (这个找了好久找到的)

  • 增加hls支持  (这个不知道怎么用,在手机上运行报错)
    npm install --save videojs-contrib-hls
    require('videojs-contrib-hls/dist/videojs-contrib-hls');

     

Logo

前往低代码交流专区

更多推荐