This time I will bring you a detailed explanation of the steps of vue-dplayer to implement hls playback. What are the precautions for vue-dplayer to implement hls playback. The following is a practical case, let's take a look.
cause
I previously wrote an article "vue2.0 vue-video-player implements hls playback", which mentioned that before using vue-video-player, I tried to use vue-dplayer to implement hls playback, but time was tight at the time and there was no way. Once that's done, change the plan. Take the time to complete it now.
start
Install dependencies
npm install vue-dplayer -S
Write component HelloWorld.vue
<template> <p> <d-player></d-player> </p> </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> </style>
Introduce hls.js
Originally it was introduced using import, but an error was reported during execution. So first introduce it using the script tag in index.html.
nbsp;html> <meta> <meta> <title>vue-dplayer-hls</title> <p></p> <!-- built files will be auto injected --> <script></script>
Notice:
According to the DPlayer Demo page code, if you want to support hls, you need to set video.type to "hls", but after I modified it, I found that it could not be played. So I looked at the source code and found that there is this place in the source code:
In other words, no matter what you fill in your component, you are actually using 'normal' to create a new Dplayer instance.
Modify source code
Customize a component VueDPlayerHls.vue, then copy the source code, and modify the problem to: type: this.video.type
<template> <p></p> </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>
Import the new component in the original component (HelloWorld.vue)
import VueDPlayer from './VueDPlayerHls';
Realize playback
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!
Recommended reading:
ajax dynamic assignment data graph
react component What are the aspects of performance optimization
The above is the detailed content of Detailed explanation of the steps to implement hls playback with vue-dplayer. For more information, please follow other related articles on the PHP Chinese website!