123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- <template>
- <view>
- <view ref="videoContent" id="wgy-player-test" :playAuth="playAuth" :change:playAuth="renderScript.receiveMsg"
- :videoId="videoId" :change:videoId="renderScript.videoIdFun"
- :playCount="playCount" :change:playCount="renderScript.playVideo"
- :status="hideFlag"
- :change:hideFlag="renderScript.hideFlagFun" :seekTime="seekTime" :change:seekTime="renderScript.seekTimeFun"
- class="kecheng-video">
- </view>
- </view>
- </template>
- <script>
- export default {
- name: "videoPlay",
- data() {
- return {
- playAuth: "", //播放凭证
- hideFlag: 'show',
- videoId: "", //阿里云视频id
- seekTime: '',
- playCount: 0,
- };
- },
- onUnload() {
- // 切换
- this.hideFlag = 'hide'
- },
- onHide() {
- this.hideFlag = 'hide'
- },
- methods: {
- init(options) {
- this.playAuth = options.playAuth;
- this.videoId = options.videoId;
- this.seekTime = options.seekTime;
- const isPlay = options.isPlay || false;
- if(isPlay) {
- this.playCount++
- }
- },
- setSeekTime(seekTime) {
- this.seekTime = '';
- this.$nextTick(() => {
- this.seekTime = seekTime;
- })
- },
- handlePause() {
- this.$emit('play-pause')
- },
- handlePlay() {
- this.$emit('play-play')
- },
- playEnd() {
- this.$emit('play-end')
- },
- handleTimeupdate(timer) {
- this.$emit('play-timeupdate',timer)
- }
- }
- }
- </script>
- <script module="renderScript" lang="renderjs">
- export default {
- data() {
- return {
- player: null,
- playAuth: '',
- videoId: '',
- }
- },
- methods: {
- playVideo() {
- setTimeout(() => {
- this.player && this.player.play()
- }, 300);
- },
- receiveMsg(newValue, oldValue, ownerInstance, instance) {
- if (newValue) {
- this.playAuth = ''
- this.playAuth = newValue
- this.loadWebPlayerSDK()
- }
- },
- videoIdFun(newValue, oldValue, ownerInstance, instance) {
- if (newValue) {
- this.videoId = ''
- this.videoId = newValue
- }
- },
- hideFlagFun(newValue, oldValue, ownerInstance, instance) {
- if (this.player) {
- this.player.pause()
- }
- },
- seekTimeFun(newValue, oldValue, ownerInstance, instance) {
- if (newValue) {
- this.player.seek(newValue)
- }
- },
- playAli() {
- let that = this
- //配置播放器
- if (!this.playAuth) {
- return false;
- }
- let player = new Aliplayer({
- id: "wgy-player-test",
- vid: this.videoId,
- playauth: this.playAuth,
- extraInfo: {
- poster: 'noposter'
- },
- skinLayout: [{
- name: "bigPlayButton",
- align: "blabs",
- x: 30,
- y: 80
- },
- {
- name: "H5Loading",
- align: "cc"
- },
- {
- name: "controlBar",
- align: "blabs",
- x: 0,
- y: 0,
- children: [{
- name: "progress",
- align: "blabs",
- x: 0,
- y: 44
- },
- {
- name: "playButton",
- align: "tl",
- x: 15,
- y: 12
- },
- {
- name: "fullScreenButton",
- align: "tr",
- x: 10,
- y: 12
- },
- {
- name: "timeDisplay",
- align: "tr",
- x: 10,
- y: 5
- }
- ]
- }
- ],
- qualitySort: "asc",
- format: "mp4",
- mediaType: "video",
- encryptType: 1,
- autoplay: false,
- isLive: false,
- rePlay: false,
- playsinline: true,
- preload: false,
- controlBarVisibility: "hover",
- useH5Prism: true
- }, function(player) {
- console.log('ppp', player)
- });
- this.player = player;
- player.on('canplay', function() {
- player.tag.play();
- });
- player.on('ended', function() {
- that.$ownerInstance.callMethod('playEnd', {
- data: 'end'
- })
- });
- player.on('pause', function() {
- that.$ownerInstance.callMethod('handlePause')
- });
- player.on('play', function() {
- that.$ownerInstance.callMethod('handlePlay')
- });
- player.on('timeupdate', function(time) {
- that.$ownerInstance.callMethod('handleTimeupdate',time.target.childNodes[0].currentTime)
- });
-
-
- },
- isHasScript() {
- let scriptExists = false;
- for (let script of document.scripts) {
- if (script.src === 'https://g.alicdn.com/de/prismplayer/2.9.6/aliplayer-min.js') {
- scriptExists = true;
- break;
- }
- }
- return scriptExists
- },
- loadWebPlayerSDK() {
- if (this.player) {
- this.player.dispose();
- }
- if (this.isHasScript()) {
- this.playAli()
- return;
- }
- return new Promise((resolve, reject) => {
- const s_tag = document.createElement('script'); // 引入播放器js
- s_tag.type = 'text/javascript';
- s_tag.src = 'https://g.alicdn.com/de/prismplayer/2.9.6/aliplayer-min.js';
- s_tag.charset = 'utf-8';
- s_tag.onload = () => {
- // console.log(this.playAuth);
- setTimeout(() => {
- this.playAli()
- }, 10);
- resolve();
- }
- document.body.appendChild(s_tag);
- const l_tag = document.createElement('link'); // 引入播放器css
- l_tag.rel = 'stylesheet';
- l_tag.href =
- 'https://g.alicdn.com/de/prismplayer/2.9.6/skins/default/aliplayer-min.css';
- document.body.appendChild(l_tag);
- });
- },
- }
- }
- </script>
- <style lang="scss">
- </style>
|