【Vue】Aliplayer 视音频播放的实践与思考

Docker

简介

阿里云Web播放器SDK(Aliplayer SDK)是阿里视频云端到云到端服务的重要一环,结合对象存储(Object Storage Service,简称OSS) 实现深度融合视频云业务,支持视音频的点播和直播等基础播放功能

本文以 Vue 组件化的角度进行全流程解析、并抽离公共业务逻辑,从而实现可维护、高复用的视音频播放组件

引入

官方实践直接在页面引入对应的JS、CSS文件,通过暴露全局 window.Aliplayer 属性自定义实例化对象,传送门 => 集成文档_Web播放器_播放器SDK_视频点播-阿里云

<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>

当我们要对其封装成一个独立的组件时,可以实现一个 dynamicLoadScript 函数去解耦全局引用的问题,调用如下 ⬇️

import {
    dynamicLoadScript } from '@/utils/'
const aliplayerCDN = 'https://g.alicdn.com/de/prismplayer/2.8.1/aliplayer-min.js'

export default {
   
  ...
  mounted () {
   
    dynamicLoadScript(aliplayerCDN, (err) => {
   
      if (err)  return this.$notify(err.message);
     
      window.addEventListener('beforeunload', this.updateLearnerTime)
      this.initAliplayer() // 初始化视频容器
      this.$once('hook:beforeDestroy', () => {
   
        window.removeEventListener('beforeunload', this.updateLearnerTime)
      })
    })
  }
}

<style lang="postcss" scoped>
  @import 'https://g.alicdn.com/de/prismplayer/2.8.1/skins/default/aliplayer-min.css';
</style>

通过 dynamicLoadScript,和 postcss 去处理文件引用,Vue hooks 提供组件挂载与销毁的回调,initAliplayer 方法进行初始化

// html => <div id="J_prismPlayer" />

export default {
   
  ...
  props: {
   
	config: {
   
	  type: Object,
	  required: true,
	  default () {
   
	     return {
   
	       url: '',      // 视频播放地址
	       cover: '',    // 封面图
	       videoId: '',  // 点播vid
	       playTime: 0,  // 续播时长
	       chapterId: '' // 章节ID
	    }
	  }
	}
  },
  data: () => ({
   
    baseConfig: {
   },   // Aliplayer 基础配置
    player: null,     // player 全局共享对象
    loading: false,   // 加载状态
    toggling: false,
    erroring: false
  }),
  methods: {
   
    initAliplayer () {
   
      const {
    cover, url: source, videoId: vid } = this.config
      const baseConfig = {
   
        cover, id: 'J_prismPlayer', width: '100%', height: '100%', autoplay: false, 
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值