基于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 相关文章推荐
escape、encodeURI、encodeURIComponent等方法的区别比较
Dec 27 Javascript
javascript数组使用调用方法汇总
Dec 08 Javascript
Js日期选择器并自动加入到输入框中示例代码
Aug 02 Javascript
JS实现一键回顶功能示例代码
Oct 28 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
jquery操作angularjs对象
Jun 26 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
js时间比较 js计算时间差的简单实现方法
Aug 26 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
JavaScript中window和document用法详解
Jul 28 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
vue实现文件上传功能
2018/08/13 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
跟老齐学Python之折腾一下目录
2014/10/24 Python
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
python mock测试的示例
2020/10/19 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
学校消防安全制度
2014/01/30 职场文书
劲霸男装广告词
2014/03/21 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
2014年度个人工作总结
2014/11/07 职场文书
运动会开幕式致辞
2015/07/29 职场文书
《静夜思》教学反思
2016/02/17 职场文书
导游词之广西漓江
2019/11/02 职场文书