基于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 相关文章推荐
超清晰的document对象详解
Feb 27 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
Feb 18 Javascript
js cookies实现简单统计访问次数
Nov 24 Javascript
jQuery的ready方法详解
Nov 27 Javascript
js实现跨域的方法实例详解
Jun 24 Javascript
AngularJS基础 ng-options 指令详解
Aug 02 Javascript
微信小程序 条件渲染详解
Oct 09 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
Angular组件化管理实现方法分析
Mar 17 Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 Javascript
JS实现长图上下滚动效果
Mar 19 Javascript
JavaScript中遍历的十种方法总结
Dec 15 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数据流应用的简单例子
2012/06/01 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
Smarty变量用法详解
2016/05/11 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
ExtJS下grid的一些属性说明
2009/12/13 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
python 显示数组全部元素的方法
2018/04/19 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
python集合能干吗
2020/07/19 Python
护理学毕业生自荐信
2013/10/02 职场文书
高校毕业生自我鉴定
2013/10/27 职场文书
函授毕业生的自我鉴定
2013/11/26 职场文书
有关爱国演讲稿
2014/05/07 职场文书
设备管理实施方案
2014/05/31 职场文书
2015年环保局工作总结
2015/05/22 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
标准发言稿结尾
2019/07/18 职场文书
SpringBoot生成License的实现示例
2021/06/16 Java/Android
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers