基于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 相关文章推荐
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
jQuery实现文本展开收缩特效
Jun 03 Javascript
高性能JavaScript循环语句和条件语句
Jan 20 Javascript
PHP获取当前页面完整URL的方法
Dec 02 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
angular2倒计时组件使用详解
Jan 12 Javascript
Angular 4.x中表单Reactive Forms详解
Apr 25 Javascript
iframe高度自适应及隐藏滚动条的实例详解
Sep 29 Javascript
微信小程序实现预览图片功能
Oct 22 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
Three.JS实现三维场景
Dec 30 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 结果集的分页实现代码
2009/03/10 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
PHP常用技巧汇总
2016/03/04 PHP
javascript静态的url如何传递
2007/05/03 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
Python实现优先级队列结构的方法详解
2016/06/02 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
计算s=f(f(-1.4))的值
2014/05/06 面试题
应聘会计求职信
2014/06/11 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
委托培训协议书
2014/11/17 职场文书
亮剑观后感
2015/06/05 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技