Video标签自定义简易视频播放器


提示:以下是本篇文章正文内容,下面案例可供参考

一、Dom结构

<template><el-dialog :title="winTitle" :close-on-click-modal="false" :visible="dialogVisible" width="44%"@close="cancel"><div class="main-content"><header class="header-content" style="background: #0F6668;"><span style="margin-left: 10px">{{ rowData.cameraName }}</span><i class="el-icon-full-screen" style="float: right; cursor: pointer; line-height: inherit; margin-right: 10px" @click="fullScreen"></i></header><div class="video-content"><video ref="video" :src="rowData.filePath" preload="auto" style="width: 100%; height: 100%" @canplay="getVideo" @timeupdate="updateProgress"></video></div><footer class="footer-content"><div class="footer-div" style="width: 40px; height: 40px"><span :class="[isPause ? 'el-icon-video-play' : 'el-icon-video-pause']" style="font-size: 40px; cursor: pointer" @click="start(isPause)"></span></div><div><span style="display: inline-block; width: 16px; height: 16px; cursor: pointer; background-color: #BF2613" @click="reStart"></span></div><div class="footer-div"><span class="el-icon-caret-left caret-span" @click="goBack"></span><span style="vertical-align: super">{{ timeTitle }}</span><span class="el-icon-caret-right caret-span" @click="goFront"></span></div><div class="footer-div progress"><el-slider v-model="percent":show-tooltip="false"@change="changePercent"@mousedown.native="progressState = true"@mouseup.native="progressState = false"></el-slider></div><div class="footer-div"><span> {{ currentTime }} </span> /<span> {{ duration }} </span></div></footer></div></el-dialog>
</template>

二、JS

<script>export default {name: 'VideoFileWindow',props: ['winTitle', 'dialogVisible', 'rowData'],data() {return {isPause: true,duration: '00:00:00',currentTime: '00:00:00',timeTitle: '',percent: 0,progressState: false}},computed: {},mounted() {},methods: {/*** 全屏* */fullScreen() {let el = this.$refs.video;if (el.requestFullscreen) {el.requestFullscreen();} else if (el.msRequestFullscreen) {el.msRequestFullscreen();} else if (el.mozRequestFullScreen) {el.mozRequestFullScreen();} else if (el.webkitRequestFullscreen) {el.webkitRequestFullscreen();} else {console.log('不支持全屏!');}},/*** 开始/暂停* */start(flag) {let video = this.$refs.video;flag ? video.play() : video.pause();this.isPause = !flag;},/*** 重播* */reStart() {let video = this.$refs.video;video.currentTime = 0;video.pause();this.isPause = true;},/*** 快进* */goFront() {let video = this.$refs.video;video.currentTime += 10;this.timeTitle = '快进10S';},/*** 快退* */goBack() {let video = this.$refs.video;video.currentTime -= 10;this.timeTitle = '快退10S';},/*** 视频加载完成* */getVideo() {this.duration = this.timeFormat(this.$refs.video.duration);},/***视频进度更新* */updateProgress() {if (!this.progressState) {let current = this.$refs.video.currentTime;let total = this.$refs.video.duration;this.currentTime = this.timeFormat(this.$refs.video.currentTime);this.percent = current / total * 100;current === total ? this.isPause = true : '';}},/*** 拖动进度条* */changePercent(data) {let total = this.$refs.video.duration;this.$refs.video.currentTime = total * data / 100;},/*** 取消操作* */cancel() {this.$emit('closeWin');},/*** 秒数转换为时分秒* @param time* @returns {string}*/timeFormat(time) {// 转换为式分秒let h = parseInt(time / 60 / 60 % 24)h = h < 10 ? '0' + h : hlet m = parseInt(time / 60 % 60)m = m < 10 ? '0' + m : mlet s = parseInt(time % 60)s = s < 10 ? '0' + s : s// 作为返回值返回return h + ':' + m + ':' + s;}}}
</script>

三、CSS

<style scoped>.main-content {background: #000000;border: 1px solid #196C71;height: 100%;}.header-content {height: 34px;font-size: 17px;font-family: Source Han Sans CN;font-weight: 500;color: #62FCFA;line-height: 37px;}.video-content {width: 100%;height: calc(90% - 34px);}.footer-content {width: 100%;height: 10%;background: #14738A;display: flex;justify-content: space-evenly;align-items: center;}.footer-div {font-size: 16px;font-family: Source Han Sans CN;font-weight: 500;color: #FFFFFF;line-height: 36px;}.caret-span {cursor: pointer;font-size: 30px;}.progress {width: 40%;}::v-deep .el-slider__bar {height: 15px;background: #59FF74;border-radius: 8px;}::v-deep .el-slider__runway {height: 15px;background: #FFFFFF;border-radius: 8px;}::v-deep .el-slider__button {transform: translateY(4px);background: #FFFFFF;border: 5px solid #59FF74;border-radius: 50%;}</style>

Video标签自定义简易视频播放器相关推荐

  1. video标签学习 xgplayer视频播放器分段播放mp4

    文章目录 学习链接 目标 video标签自带视频和制作的视频区别 video标签的src属性 本地视频文件 前端代码 播放效果 服务器视频文件 示例1 后端代码 前端代码 播放效果 示例2 后端代码 ...

  2. video标签设计vue视频播放器组件

    文章目录 1.video播放器组件设计 2.在弹窗中运用视频组件 3.小结 1.video播放器组件设计 啥也别说了,上代码: <template> <div><meta ...

  3. 视频播放器+android,简易视频播放器

    NetConnection 对象 0002 var netConnection:NetConnection=new NetConnection ; 0003 /*如果连接到没有使用服务器的 priva ...

  4. Android的媒体播放器——简易视频播放器(详解)

    一.案例效果 二.主界面的设计与功能 2.1 案例效果 2.2 布局界面 activity_main.xml 参考代码: <?xml version="1.0" encodi ...

  5. 【基于QMediaPlayer的简易视频播放器】— 3、结合QSlider实现播放进度控制和音量控制

    基于QMediaPlayer的简易视频播放器 1.创建基本布局 2.QMediaPlayer的基本使用 3.结合QSlider实现播放进度控制和音量控制 4.重载QSlider鼠标响应事件,实现单击跳 ...

  6. 【Java】简易视频播放器

    [效果图] [功能] 1.当窗口获取焦点后,按空格暂停/播放 2.原速播放键.暂停/播放键.倍速播放键(最高3倍速,每次递增0.5) 3.进度条可点击选择播放位置 4.时间显示.播放速度显示 [项目与 ...

  7. 【Harmony OS】【ArkUI】ets开发 简易视频播放器

    前言:这一次我们来使用ets的Swiper组件.List组件和Video组件制作一个简易的视频播放器.本篇是以HarmonyOS官网的codelab简易视频播放器(eTS)为基础进行编写.本篇最主要的 ...

  8. java视频播放器制作_java创建简易视频播放器

    java创建简易视频播放器 发布时间:2020-09-23 04:28:09 来源:脚本之家 阅读:98 作者:南柯一梦xihe 最近有个多媒体的作业,要求使用visualC++和OpenCV编写一个 ...

  9. 视频播放页php,html jquery简易视频播放器

    html jquery js 简易视频播放器 直接上代码:html> Document #durationbar{ width: 500px; height: 20px; } #duration ...

最新文章

  1. NLP 新宠:谈Prompt的前世今生
  2. MindCon | 当「赛博朋克」遇到「AI极客」会发生什么?
  3. 服务器销售税率,转销售云服务器税率
  4. iOS学习笔记19 地图(一)定位CoreLocation
  5. 汉字转html实体符号js_html实体编码遇上js代码
  6. redis 缓存有效期
  7. 《『若水新闻』客户端开发教程》——09.代码编写(1)
  8. ThinkPHP5 笔记-控制器
  9. [bzoj1033] [ZJOI2008]杀蚂蚁 Big MoNI
  10. Windows 版Oracle 19c 下载安装步骤及细节(Oracle数据库下载)
  11. RLC电阻电容电感基础知识——电感篇
  12. 代码审查工具 phabricator 使用学习
  13. c语言 word转pdf,超简单的Word转换成PDF技巧,可惜很多人还不会
  14. 学习方法-北大学霸(01)学习方法基础
  15. 逻辑、认识论和本体论“三统一”
  16. 1000内不能被7整除的数
  17. webuploader上传图片插件案例
  18. mysql master host_MySQL5.5.28配置master-maser复制,master-host等参数不用了
  19. 重新认识康德的“头上星空”
  20. 计算机组装时各配件的安装顺序,如何组装一台电脑 组装一台电脑配件及步骤【详解】...

热门文章

  1. Could not delete F:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/platfor
  2. Qt学习:Qt将语音转换为文字
  3. C#删除目录和目录下的所有文件
  4. 在Ubuntu 20.04服务器上使用Bitnami堆栈创建WordPress博客
  5. 【JavaScript 逆向】数美滑块逆向分析
  6. 简易画图板的继续优化,分类与铅笔的实现
  7. 外资零售的冰火两重天:阴面上演撤退潮,阳面上演新店开疆拓土
  8. 尚硅谷2020最新版宋红康JVM教程-10-对象实例化内存布局与访问定位
  9. ubuntu修改ntp服务器,Ubuntu搭建NTP服务器
  10. win10修改ntp服务器地址,win10怎么设置ntp服务器地址