vue2.0+vue-dplayer实现hls播放的示例


Posted in Javascript onMarch 02, 2018

起因

之前写了一篇《 vue2.0+vue-video-player实现hls播放》,里边有提到在用vue-video-player之前,我尝试着使用vue-dplayer实现hls播放,但是当时时间紧迫,还没有完成,就换方案了。现在抽时间把它补齐吧。

开始

安装依赖

npm install vue-dplayer -S

编写组件HelloWorld.vue

<template>
 <div class="hello">
  <d-player ref="player" @play="play" :video="video" :contextmenu="contextmenu"></d-player>
 </div>
</template>

<script>
import VueDPlayer from './VueDPlayerHls';
export default {
 name: 'HelloWorld',
 data () {
  return {
   msg: 'Welcome to Your Vue.js App',
   video: {
     url: 'https://logos-channel.scaleengine.net/logos-channel/live/biblescreen-ad-free/chunklist_w630020335.m3u8',
     pic: 'http://static.smartisanos.cn/pr/img/video/video_03_cc87ce5bdb.jpg',
     type: 'hls'
    },
    autoplay: false,
    player: null,
    contextmenu: [
      {
        text: 'GitHub',
        link: 'https://github.com/MoePlayer/vue-dplayer'
      }
    ]
  }
 },
 components: {
  'd-player': VueDPlayer
 },
 methods: {
  play() {
    console.log('play callback')
   }
 },
 mounted() {
  this.player = this.$refs.player.dp;
  // console.log(this.player);
  var hls = new Hls();
  hls.loadSource('https://logos-channel.scaleengine.net/logos-channel/live/biblescreen-ad-free/chunklist_w630020335.m3u8');
  hls.attachMedia(this.player);
 }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

引入hls.js

本来是使用import引入,可是执行报错。所以就先在index.html内用script标签引入进来。

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <title>vue-dplayer-hls</title>
 </head>
 <body>
  <div id="app"></div>
  <!-- built files will be auto injected -->
  <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
 </body>
</html>

注意:

根据DPlayer Demo页面代码,想支持hls,需要将video.type 设置为”hls”,但是我修改之后发现无法播放。于是去看了源码,发现源码内有这样一处:

vue2.0+vue-dplayer实现hls播放的示例

也就是说不论你在自己的组件内填写的是什么,其实都是使用的'normal'来new的Dplayer实例。

修改源码

自定义一个组件VueDPlayerHls.vue,然后copy源代码,问题处修改为: type: this.video.type

<template>
 <div class="dplayer"></div>
</template>

<script>
 require('../../node_modules/dplayer/dist/DPlayer.min.css');
 import DPlayer from 'DPlayer'
 export default {
  props: {
   autoplay: {
    type: Boolean,
    default: false
   },
   theme: {
    type: String,
    default: '#FADFA3'
   },
   loop: {
    type: Boolean,
    default: true
   },
   lang: {
    type: String,
    default: 'zh'
   },
   screenshot: {
    type: Boolean,
    default: false
   },
   hotkey: {
    type: Boolean,
    default: true
   },
   preload: {
    type: String,
    default: 'auto'
   },
   contextmenu: {
    type: Array
   },
   logo: {
    type: String
   },
   video: {
    type: Object,
    required: true,
    validator(value) {
     return typeof value.url === 'string'
    }
   }
  },
  data() {
   return {
    dp: null
   }
  },
  mounted() {
   const player = this.dp = new DPlayer({
    element: this.$el,
    autoplay: this.autoplay,
    theme: this.theme,
    loop: this.loop,
    lang: this.lang,
    screenshot: this.screenshot,
    hotkey: this.hotkey,
    preload: this.preload,
    contextmenu: this.contextmenu,
    logo: this.logo,
    video: {
     url: this.video.url,
     pic: this.video.pic,
     type: this.video.type
    }
   })
   player.on('play', () => {
    this.$emit('play')
   })
   player.on('pause', () => {
    this.$emit('pause')
   })
   player.on('canplay', () => {
    this.$emit('canplay')
   })
   player.on('playing', () => {
    this.$emit('playing')
   })
   player.on('ended', () => {
    this.$emit('ended')
   })
   player.on('error', () => {
    this.$emit('error')
   })
  }
 }
</script>

在原组件(HelloWorld.vue)内import新组件

import VueDPlayer from './VueDPlayerHls';

实现播放

vue2.0+vue-dplayer实现hls播放的示例

最后

github地址:https://github.com/PhillCheng/vue-dplayer-hls

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
JavaScript中的函数重载深入理解
Aug 04 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
Ajax 加载数据 练习代码
Jan 05 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
Dec 12 Javascript
在vue-cli中组件通信的方法
Dec 16 Javascript
vue项目国际化vue-i18n的安装使用教程
Mar 14 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
Oct 17 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 #Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 #Javascript
浅谈FastClick 填坑及源码解析
Mar 02 #Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 #Javascript
vue将时间戳转换成自定义时间格式的方法
Mar 02 #Javascript
Element-ui table中过滤条件变更表格内容的方法
Mar 02 #Javascript
使用vue-aplayer插件时出现的问题的解决
Mar 02 #Javascript
You might like
用PHP函数解决SQL injection
2006/10/09 PHP
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
PHP中,文件上传
2006/12/06 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
工程师求职简历的自我评价分享
2013/10/10 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
入党自荐书范文
2014/03/09 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
2014年保洁员工作总结
2014/11/19 职场文书