基于Vue插入视频的2种方法小结


Posted in Javascript onApril 02, 2019

基于Vue插入视频的2种方法小结

屏幕快照 2019-04-01 下午8.06.02.png

方法一:iframe插入视频链接

1.1 ##### 当前播放的视频

<div class="video-wrap" style="width:80%;float:left;oveflow:hidden;">
     <iframe :src="this.activeVideo.youtobeURL" frameborder='0'
     allow='autoplay;encrypted-media' allowfullscreen style='width:100%;height:500px;'>
     </iframe>
     <h3>{{this.activeVideo.title}}</h3>
    </div>

1.2#####视频列表

<div class="video-list" style="float:right;width:20%;text-align:center;">
    <div v-for='video in videos' :key='video.id' class="thumbnail" >
     <div class="thumbnail-img" >
      <div style="height:50%;width:100%;position:absolute;z-index:999"
      @click="activeVideoShow(video.id)"></div>
     <iframe :src='video.youtobeURL' :alt="video.title" />
     </div>
     <div class="thumbnail-info">
      <h4>{{video.title}}</h4>
      <div class="thumbnail-views">
      <span>{{video.speaker}}</span>
      <span>{{video.views}} Views</span>
      </div>
      <div class="thumbnail-describe">
      {{video.describe}}
      </div>
     </div>
    </div>
   </div>

1.3#####定义的数据结构(自己写的demo,可能实际中后台返的数据结构会有所不同)

data () {
  return {
   flag:false,
   videos:[{
    id:1,title:'test2',youtobeURL:'http://player.youku.com/embed/XMzcwNTY3NTM2MA',speaker:'harry', likes:101,views:0,describe:'good'
   },{
    id:2,title:'test3',youtobeURL:'http://player.youku.com/embed/XMzcwNTY3NTM2MA',speaker:'harry', likes:100,views:75,describe:'good'
   }],
   activeVideo:{
    id:3,title:'test1',thumbnail:'./../../static/images/headImg.png',speaker:'harry', likes:0,views:0,describe:'good',
    youtobeURL:'http://player.youku.com/embed/XMzcwNTY3NTM2MA'
   }
  }
 }

1.4##### 点击视频列表中的视频转变为当前视频

ps:最开始的时候把点击事件写在iframe上,但是点击无效。后来写了个div,完美解决:

<div style="height:50%;width:100%;position:absolute;z-index:999"
      @click="activeVideoShow(video.id)"></div>

1.5#####转换当前视频的点击事件:通过id来判断当前点击的是哪个

activeVideoShow(id){
  this.videos.filter(item=>{
     if(id == item.id){
      this.activeVideo=item
     }
    }) 
  }

方法二:引用了vue-video-player插件(没有视频列表)

相对于iframe方法写了一堆div和style,vue-video-player简直精简到起飞

2.1#####第一次用这个插件,不是很熟悉,所以根据官方的API 写了一个videoPlayer的组件,代码如下:

<div>
    <video ref="videoPlayer" class="video-js"></video>
  </div>

2.1-1#####需要引入video.js和定义相关的options

import videojs from 'video.js'
---------------------------------
props:{
    options:{
      type:Object,
      default(){
        return{
        }
      }
    }
  },
data(){
    return{
      player:null
    }
  },
mounted(){
    this.player=videojs(this.$refs.videoPlayer,this.options,function onPlayerReady(){
      console.log('onPlayerReady',this)
    })
  }

2.2#####在插入视频的页面中引入上面的videoPlayer组件,在view层代码如下:

<video-player class="video-player vjs-custom-skin "
    ref="videoPlayer"
    :playsinline='false'
    :options='videoOptions'
    @play="onPlayerPlay($event)" 
    @pause='onPlayerPause($event)'
    @statechagned='playerStateChanged($event)'
    >
    </video-player>

2.3#####需要引入的插件

import './../../node_modules/video.js/dist/video-js.css'
import './../../node_modules/vue-video-player/src/custom-theme.css'
import videojs from 'video.js'
import {videoPlayer} from 'vue-video-player'
import 'videojs-flash'
import VideoPlayer from '@/components/videoPlayer.vue'

2.3-1#####定义相关数据

props:{
   state:Boolean,
  },
data(){
    return{
      videoOptions:{
        playbackRates:[1.0,1.5,2.0], // 播放速度
        autoplay:false, // 如果true,浏览器准备好时开始回放
        controls:true,
        muted:false, // 默认情况下将会消除任何音频
        loop:false, //循环播放
        preload:'auto', // <video>加载元素后立即加载视频
        language:'zh-CN',
        aspectRatio:'16:9', //流畅模式,并计算播放器动态大小时使用该值
        fluid:true, //按比例缩放以适应容器
        sources:[{
         src:'http://vjs.zencdn.net/v/oceans.mp4',
         type:'video/mp4'
        }],
        poster:'http://vjs.zencdn.net/v/oceans.png', // 封面地址
        notSupportedMessage:'此视频暂无法播放,请稍后再试',
      }
    }
  }

代码地址: https://github.com/yinglichen/videoPlayer

ps:用canvas写了个字幕功能,还有待修缮,后期补上。

总结

以上所述是小编给大家介绍的基于Vue插入视频的2种方法小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
事件绑定之小测试  onclick &amp;&amp; addEventListener
Jul 31 Javascript
JS完成代码前最好对其做5件事
Apr 07 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
使用jquery的ajax需要注意的地方dataType的设置
Aug 12 Javascript
jQuery源码解读之removeClass()方法分析
Feb 20 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
Nov 16 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
Jun 13 Javascript
JavaScript每天必学之数组和对象部分
Sep 17 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
Sep 18 Javascript
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
Jul 06 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 02 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
Apr 02 #Javascript
小程序实现自定义导航栏适配完美版
Apr 02 #Javascript
es6 symbol的实现方法示例
Apr 02 #Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 #Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 #Javascript
Vue 组件修改根实例的数据的方法
Apr 02 #Javascript
vue鼠标悬停事件实例详解
Apr 01 #Javascript
You might like
PHP MySql增删改查的简单实例
2016/06/21 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
php实现算术验证码功能
2018/12/05 PHP
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
python函数装饰器用法实例详解
2015/06/04 Python
python中__slots__用法实例
2015/06/04 Python
Python实现Linux中的du命令
2017/06/12 Python
python模拟事件触发机制详解
2018/01/19 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
Python 字典中的所有方法及用法
2020/06/10 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
写好自荐信的要点
2013/11/06 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
职工年度考核评语
2014/12/31 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
团支部书记竞选稿
2015/11/21 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis