import TCPlayer from 'tcplayer.js'; import 'tcplayer.js/dist/tcplayer.css'; export const _initVideo = (type: string, forms: any, videoRef: any) => { let player = type === 'one' ? forms.player1 : forms.player2; // _initVideo('one', forms, forms.player1, videoIntervalRef, forms.introductionVideo, forms.coverImg, forms.player1Speed, forms.videoLoading1) const videoUrl = type === 'one' ? forms.introductionVideo : forms.introductionVideo2; const coverImg = type === 'one' ? forms.coverImg : forms.coverImg2; let playerSpeed = type === 'one' ? forms.playerSpeed1 : forms.playerSpeed2; let videoLoading = type === 'one' ? forms.videoLoading1 : forms.videoLoading2; const videoId = type === 'one' ? 'register-video' : 'register-video2'; const Button = TCPlayer.getComponent('Button'); const BigPlayButton = TCPlayer.getComponent('BigPlayButton'); BigPlayButton.prototype.createEl = function () { const el = Button.prototype.createEl.call(this); const _html = ''; el.appendChild( TCPlayer.dom.createEl('div', { className: 'vjs-button-icon', innerHTML: _html }) ); return el; }; player = TCPlayer(videoId, { appID: '', controls: true, plugins: {} }); // player-container-id 为播放器容器 ID,必须与 html 中一致 if (player) { player.src(videoUrl); // url 播放地址 player.poster(coverImg || ''); // player.on('loadstart', () => {}) player.on('ready', (item: any) => { console.log('ready', item); // player.pause() }); player.on('loadedmetadata', () => { console.log('loadedmetadata'); videoLoading = false; if (type === 'one') { forms.videoLoading1 = false; } else { forms.videoLoading2 = false; } }); // 速度变化时 player.on('ratechange', () => { playerSpeed = playerSpeed < player.playbackRate() ? player.playbackRate() : playerSpeed; }); player.on('seeking', () => { console.log('seeking'); videoRef.isActive.value && videoRef.pause(); }); // // 拖动结束时 player.on('seeked', () => { console.log('seeked'); videoRef.isActive.value && videoRef.pause(); }); // 正在搜索中 player.on('waiting', () => { // console.log('waiting pause') videoRef.isActive.value && videoRef.pause(); }); // 如何视频在缓存不会触发 player.on('timeupdate', () => { // console.log('timeupdate', player.currentTime()) // 判断视频计时器是否暂停,如果暂停则恢复 // 添加 「forms.player.playing」 是由会跳转到上次播放时间,会触发些方法 if ( !videoRef.isActive.value && player.currentTime() > 0 && !player.paused() ) { // console.log('timeupdate play') videoRef.resume(); } }); // 视屏播放时暂停 player.on('ended', () => { player.pause(); }); // 开始播放 player.on('play', () => { // 视频一播放 if (player.id() === 'register-video') { forms.player2.pause(); } // 视频二播放 if (player.id() === 'register-video2') { forms.player1.pause(); } // console.log('play'); // 判断视频计时器是否暂停,如果暂停则恢复 videoRef.resume(); }); // 暂停播放 player.on('pause', () => { // console.log('pause', videoRef.isActive.value); videoRef.pause(); }); let isFullscreen = false; player.on('fullscreenchange', () => { console.log('fullscreen fullscreenchange', player.isFullscreen()); // if (player.isFullscreen()) { if (isFullscreen) { isFullscreen = false; const i = document.getElementById('fullscreen-back'); i && i.remove(); } else { isFullscreen = true; const i = document.createElement('i'); i.id = 'fullscreen-back'; i.className = 'van-icon van-icon-arrow-left video-back'; i.addEventListener('click', () => { player.exitFullscreen(); }); document.getElementById(videoId)?.appendChild(i); } // } else { // const i = document.getElementById('fullscreen-back'); // i && i.remove(); // } }); return player; } };