基于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 相关文章推荐
jQuery库与其他JS库冲突的解决办法
Feb 07 Javascript
JavaScript经典效果集锦
Jul 06 Javascript
JQuery的Validation插件中Remote验证的中文问题
Jul 26 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
Feb 10 Javascript
js控制滚动条缓慢滚动到顶部实现代码
Mar 20 Javascript
js 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
js 判断js函数、变量是否存在的简单示例代码
Mar 04 Javascript
Javascript 函数parseInt()转换时出现bug问题
May 20 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
Mar 04 Javascript
支付宝小程序tabbar底部导航
Nov 06 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
python生成器表达式和列表解析
2016/03/10 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
python设置环境变量的原因和方法
2019/06/24 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
毕业生找工作推荐信
2013/11/21 职场文书
模具数控专业自荐信
2014/01/27 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
天猫活动策划方案
2014/08/21 职场文书
运动会演讲稿100字
2014/08/25 职场文书