Vue

vue中使用video标签

Posted by monkey-yu on December 14, 2020 | 浏览量: -

几年的前端工作中,竟然从来没用过video标签。实为惭愧。 这次趁着做项目了解下video 标签的一些属性及方法。 特此记录下,在vue项目中使用video 标签播放视频。

  1. vue页面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<template>
    <div class="device-wrap">
        <div class="frame">
          <p class="frame-name">摄像画面</p>
          <div class="frame-box">
            <video id="videoPlayer" width="100%" height="100%"
             object-fit='fill' autoplay="true" muted="muted" loop controls>
              <source src="../assets/images/video.mp4"  type="video/mp4">
            </video>
          </div>
            /* 下面img是将视频全屏的icon */
          <img class="frame-icon" src="../assets/images/full-screen.png"
           alt="" @click="fullScreen()">
        </div>
    </div>
</template>

HTML5 中的video标签:

image-20201214172150294

  1. 一些方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    methods: {
    // 获取视频播放时长
        getVideoTime () {
          if (document.getElementById('videoPlayer')) {
            const videoPlayer = document.getElementById('videoPlayer');
            videoPlayer.addEventListener('timeupdate', () => {
              console.log(`当前的时间点是${videoPlayer.currentTime},视频长度是				  ${videoPlayer.duration}`);
            }, false);
          }
        },
        // 设置播放点,续播
        playBySeconds (num) {
          if (num && document.getElementById('videoPlayer')) {
            const myVideo = document.getElementById('videoPlayer');
            // myVideo.play();
            myVideo.currentTime = num;
          }
        },
        // 自定义全屏事件
        fullScreen() {
           const myVideo = document.getElementById('videoPlayer');
            if (myVideo.requestFullscreen) {
                myVideo.requestFullscreen()
            } else if (myVideo.mozRequestFullScreen) {
                myVideo.mozRequestFullScreen()
            } else if (myVideo.msRequestFullscreen) {
                myVideo.msRequestFullscreen()
            } else if (myVideo.webkitRequestFullscreen) {
                myVideo.webkitRequestFullScreen()
            }
        },
    },
    // 上述方法在mounted生命周期里调用
    mounted () {
        this.getVideoTime();
        this.playBySeconds(30198 / 1000);
    }
    

    上面的方法是对一些特定需求做的。 比如需求:后端向前端发送某时刻开始播放视频、当视频中的控件不显示,即controls = false时,需要自定义方法使视频全屏播放。

    上面介绍是html5标签的video 标签,来载入视频播放功能的。 一些特殊情景下,比如需要将web 页面放入ue 场景中,video 视频可能不播放。需要使用video.js 插件 或者 vue-video-player组件。因地制宜吧!