vue-video-player 组件的使用

安装

cnpm i vue-video-player --save

示例

<template>
  <div>
    <vue-video-player
      class="video-player-box"
      ref="videoPlayer"
      :options="playerOptions"
      :playsinline="true"
      customEventName="customstatechangedeventname"
      @play="onPlayerPlay"
      @pause="onPlayerPause"
      @ended="onPlayerEnded"
      @waiting="onPlayerWaiting"
      @playing="onPlayerPlaying"
      @loadeddata="onPlayerLoadeddata"
      @timeupdate="onPlayerTimeupdate"
      @canplay="onPlayerCanplay"
      @canplaythrough="onPlayerCanplaythrough"
      @statechanged="playerStateChanged"
      @ready="playerReadied"
    >
    </vue-video-player>
  </div>
</template>
<!-- 
    // 视频格式
    type:"video/webm"   // 可以播放,用ogg也可打开
    type:"video/ogg"    // 可以播放,用webm也可打开
    type:"video/3gp"    // 可以播放
    type:"video/mp4"    // 可以播放
    type:"video/avi"    // 打不开 无法播放
    type:"video/flv"    // 打不开 可以使用flvjs代替
    type:"video/mkv"    // 打不开 使用video/mp4可以播放
    type:"video/mov"    // 打不开 使用video/mp4可以播放
    type:"video/mpg"    // 打不开 未测试
    type:"video/swf"    // 打不开  未测试
    type:"video/ts"     // 打不开 未测试
    type:"video/wmv"    // 打不开 未测试
    type:"video/vob"    // 没转化 未测试
    type:"video/mxf"    // 转化出错 未测试
    type: "video/rm"     // 转化出错 未测试
    // 组件方法
    重置进度条
    this.player.src(src)
    加载视频
    this.player.load();
    播放视频
    this.player.play();
    暂停播放
    this.player.pause();
    直接全屏 如果当前设备支持的话
    this.player.requestFullscreen();
    在全屏模式下,将视频恢复到正常大小
    this.player.exitFullscreen();
    当环境不支持全屏时 则扩展铺满容器
    this.player.enterFullWindow();
    重置播放器
    this.player.reset();
    返回当前播放源信息
    this.player.currentSources();
    获取或者设置预加载属性
    this.player.preload(val);
    播放控件是否显示
    this.player.controls(false);
    /* 父组件可以通过获取当前组件的 player 来调用 videoPlayer 组件的方法 */
 -->
<script>
import { videoPlayer } from 'vue-video-player'
import 'video.js/dist/video-js.css'
export default {
  components: {
    VueVideoPlayer: videoPlayer
  },
  data() {
    return {
      playerOptions: {
        // videojs options
        // 是否等浏览器准备好后自动播放
        autoplay: true,
        // 是否静音
        muted: true,
        // 结束后是否重新开始
        loop: false,
        // 语言
        language: 'en',
        // 播放速度可选列表
        playbackRates: [],
        // 播放视频源
        sources: [
          {
            type: 'video/mp4',
            src: '/flv/diaosi.mov'
          }
        ],
        // 视频比例
        // aspectRatio: '4:3',
        //  为 true 时, 播放器具有流畅的大小
        fluid: true,
        // 封面
        // poster: '/static/images/author.jpg'
        controlBar: {
          //当前时间和持续时间的分隔符
          timeDivider: true,
          //显示持续时间
          durationDisplay: true,
          //是否显示剩余时间功能
          remainingTimeDisplay: false,
          //全屏按钮
          fullscreenToggle: true,
          //播放暂停按钮
          playToggle: true,
          //音量控制
          volumeMenuButton: false,
          //当前播放时间
          currentTimeDisplay: true,
          //点播流时,播放进度条,seek控制
          progressControl: true,
          //直播流时,显示LIVE
          liveDisplay: true,
          //播放速率,当前只有html5模式下才支持设置播放速率
          playbackRateMenuButton: false
        }
      }
    }
  },
  mounted() {
    console.log('this is current player instance object', this.player)
  },
  computed: {
    player() {
      return this.$refs.videoPlayer.player
    }
  },
  methods: {
    // 播放(播放时会调用)(用户操作调用)
    onPlayerPlay(player) {
      console.log('播放', player)
      this.$emit('onPlayerPlay', player)
    },
    // 暂停(暂停时调用)(用户操作调用)
    onPlayerPause(player) {
      console.log('暂停', player)
      this.$emit('onPlayerPause', player)
    },
    // 播放状态改变回调
    playerStateChanged(playerCurrentState) {
      console.log('数据变化', playerCurrentState)
      this.$emit('playerStateChanged', playerCurrentState)
    },
    // 准备就绪(预加载前会调用)(初始化调用)将侦听器绑定到组件的就绪状态。与事件监听器的不同之处在于,如果ready事件已经发生,它将立即触发该函数
    playerReadied(player) {
      console.log('准备就绪', player)
      this.$emit('playerReadied', player)
    },
    // 结束(视频播放完毕调用)
    onPlayerEnded(player) {
      console.log('结束', player)
      this.$emit('onPlayerEnded', player)
    },
    // 等待(视频中出现loading就会调用,加载时调用)(高频调用)
    onPlayerWaiting(player) {
      console.log('等待', player)
      this.$emit('onPlayerWaiting', player)
    },
    // 播放中(进入播放状态会调用)(等待onPlayerWaiting和播放onPlayerPlay执行后会调用)(高频调用)
    onPlayerPlaying(player) {
      console.log('播放中', player)
      this.$emit('onPlayerPlaying', player)
    },
    // 当播放器在当前播放位置下载数据时触发
    onPlayerLoadeddata(player) {
      console.log('预加载', player)
      this.$emit('onPlayerLoadeddata', player)
    },
    // 进度更新(当前播放位置发生变化时触发)(视频接收到新内容会一直调用)(高频调用)
    onPlayerTimeupdate(player) {
      console.log('进度更新', player)
      this.$emit('onPlayerTimeupdate', player)
    },
    // 媒体的readyState为HAVE_FUTURE_DATA或更高(预加载onPlayerLoadeddata调用后会调用)(初始化调用)
    onPlayerCanplay(player) {
      console.log('是否播放', player)
      this.$emit('onPlayerCanplay', player)
    },
    // 能够从头到尾播放(是否播放onPlayerCanplay调用后会调用)(初始化调用)这意味着可以在不缓冲的情况下播放整个媒体文件
    onPlayerCanplaythrough(player) {
      console.log('能够从头到尾播放', player)
      this.$emit('onPlayerCanplaythrough', player)
    }
  }
}
</script>

Logo

前往低代码交流专区

更多推荐