几年的前端工作中,竟然从来没用过video标签。实为惭愧。 这次趁着做项目了解下video 标签的一些属性及方法。 特此记录下,在vue项目中使用video 标签播放视频。
- 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标签:
-
一些方法:
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组件。因地制宜吧!