이번에는 vue-dplayer를 사용하여 hls 재생을 구현하는 단계에 대해 자세히 설명하겠습니다. vue-dplayer에서 hls 재생을 구현하는 데 있어 주의 사항은 무엇입니까?
원인
나는 이전에 "vue2.0+vue-video-player가 hls 재생을 구현합니다"라는 기사를 썼는데, vue-video-player를 사용하기 전에 vue-dplayer를 사용하여 hls 재생을 구현하려고 시도했지만 당시 시간이 촉박했다고 언급했습니다. 그래도 완료되지 않으면 계획이 변경됩니다. 지금 시간을 내어 완료해 보세요.
시작
종속성 설치
npm install vue-dplayer -S
구성 요소 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>
작성 hls.js를 소개합니다
원래는 import를 이용해 도입됐으나 실행 중 오류가 보고됐다. 따라서 먼저 index.html의 스크립트 태그를 사용하여 소개하세요.
rreee주의:
DPlayer Demo 페이지 코드에 따르면 hls를 지원하려면 video.type을 "hls"로 설정해야 하는데 수정한 후에 재생이 안되는 것을 발견했습니다. 그래서 소스코드를 보다가 소스코드에서 이런 곳을 발견했습니다:
즉, 구성 요소에 무엇을 채우든 실제로는 'normal'을 사용하여 새 Dplayer 인스턴스를 생성하는 것입니다.
소스 코드 수정
구성 요소 VueDPlayerHls.vue를 사용자 정의한 다음 소스 코드를 복사하고 문제를 다음과 같이 수정합니다. 유형: this.video.type
nbsp;html> <meta> <meta> <title>vue-dplayer-hls</title> <p></p> <!-- built files will be auto injected --> <script></script>
원래 구성 요소(HelloWorld.vue)에서 새 구성 요소를 가져옵니다
<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>
재생을 실현
이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
ajax 동적 할당 데이터 그래프반응 구성 요소의 성능 최적화 측면은 무엇입니까
위 내용은 vue-dplayer를 사용하여 hls 재생을 구현하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!