发布时间:2023-06-21 13:30
这个引入最好放在较外层的标签里, 要在创建播放器之前就引入, 毕竟这是一个网络资源, 加载需要时间, 否则偶尔会因为创建播放器时找不到资源而报错.
<div>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.9.7/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.9.7/aliplayer-min.js">script>
div>
<template>
<div class="prism-player" id="J_prismPlayer" style="margin-left: auto; margin-right: auto;">div>
template>
<script>
export default {
props:{
//组件需要的参数
video: Object
},
data() {
return {
}
},
created() {
//console.log("组件成功")
},
mounted(){
this.initPlayer()
},
methods: {
initPlayer(){
//console.log(this.video)
new Aliplayer({
id: 'J_prismPlayer',
vid: this.video.vid, // 视频id
playauth: this.video.playauth, // 播放凭证
encryptType: '1', // 如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项
width: '800px',
height: '450px',
//cover: 'http://guli.shop/photo/banner/1525939573202.jpg', // 封面
qualitySort: 'asc', // 清晰度排序
mediaType: 'video', // 返回音频还是视频
autoplay: true, // 自动播放
isLive: false, // 直播
rePlay: false, // 循环播
preload: true,
controlBarVisibility: 'hover', // 控制条的显示方式:鼠标悬停
useH5Prism: true, // 播放器类型:html5
}, function(player) {
console.log('播放器创建成功')
})
}
}
}
script>
第3步: 在你要进行播放视频的页面的对话框中添置播放器组件player.
<el-dialog :visible.sync="dialogVisible"
:close-on-click-modal="false"
:destroy-on-close="true"
@close="playerVisible=false"
style="text-align: center; width: 1700px;">
<player :video="video" v-if="playerVisible">player>
el-dialog>
<div>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.9.7/skins/default/aliplayer-min.css" />
<script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.9.7/aliplayer-min.js">script>
div>
注意看, 第一步说的资源引入代码块我是放在了对话框标签的外面, 也就是要在播放器创建之前就先加载资源.然后还用v-if=“playerVisible” 控制播放器的创建时机, 我这是为了控制当对话框渲染完成且视频数据获取到后才开始创建播放器, 不这样做的话容易报 播放器找不到容器 和 视频播放需要id 的错.
第4步: 在你要进行播放视频的页面的methods中添加控制相关的函数, 并在对应的点击事件中调用.
playVideo(row){
//console.log(row)
this.dialogVisible=true
this.video={}
courseApi.getPlayAuth(row.vid)
.then(response=>{
this.video.vid=row.vid
this.video.playauth=response.data.data.res.playAuth
this.playerVisible=true
})
.catch(error=>{
})
},
注意: 我这里是在点击table表格中的一行触发打开弹窗, 这里需根据自己的页面实际情况进行编写
mysql bitmap index_位图索引:原理(BitMap index)
[SpringBoot的@Async注解和关键字synchronized的使用]
vue3 实现 todoList 知识点 reactive, toRefs, computed, watchEffect, filters,localStorage数据存储、获取
《高等运筹学》复习题手写解答 Advanced Operations Research: Final Exam:Review Exercises
清华教授沈向洋:创新就要做到极致,用开源的方式培养未来的工程师
使用Flink1.14 + Iceberg0.13构建数据湖