90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| 
								 | 
							
								<template>
							 | 
						||
| 
								 | 
							
									<div id="player" style="width: 100%;height: 300px;"></div>
							 | 
						||
| 
								 | 
							
								</template>
							 | 
						||
| 
								 | 
							
								<script>
							 | 
						||
| 
								 | 
							
									export default {
							 | 
						||
| 
								 | 
							
										props: {
							 | 
						||
| 
								 | 
							
											src: {
							 | 
						||
| 
								 | 
							
												type: String,
							 | 
						||
| 
								 | 
							
												default () {
							 | 
						||
| 
								 | 
							
													return ''
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
										data() {
							 | 
						||
| 
								 | 
							
											return {
							 | 
						||
| 
								 | 
							
												vodPlayerJs: 'https://player.polyv.net/resp/vod-player/latest/player.js',
							 | 
						||
| 
								 | 
							
												vid: '',
							 | 
						||
| 
								 | 
							
											};
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										mounted() {
							 | 
						||
| 
								 | 
							
											this.loadPlayerScript(this.loadPlayer);
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
										watch: {
							 | 
						||
| 
								 | 
							
											// 监听 src 变化,当父组件 filepaths 更新时触发
							 | 
						||
| 
								 | 
							
											src(newVal, oldVal) {
							 | 
						||
| 
								 | 
							
												if (newVal && newVal !== oldVal) {
							 | 
						||
| 
								 | 
							
													const parsedUrl = new URL(newVal);
							 | 
						||
| 
								 | 
							
													let vid = parsedUrl.searchParams.get('vid');
							 | 
						||
| 
								 | 
							
													// 当 src 变化时,执行重新加载逻辑
							 | 
						||
| 
								 | 
							
													// this.reloadVideo();
							 | 
						||
| 
								 | 
							
													this.player.changeVid({
							 | 
						||
| 
								 | 
							
														wrap: '#player',
							 | 
						||
| 
								 | 
							
														width: '100%',
							 | 
						||
| 
								 | 
							
														height: '100%',
							 | 
						||
| 
								 | 
							
														vid: vid,
							 | 
						||
| 
								 | 
							
														// ban_seek:'on',
							 | 
						||
| 
								 | 
							
														ban_history_time: "on", // 开启续播
							 | 
						||
| 
								 | 
							
														ban_seek_by_limit_time: 'on',
							 | 
						||
| 
								 | 
							
														showHd: false,
							 | 
						||
| 
								 | 
							
														showAuto: false,
							 | 
						||
| 
								 | 
							
														showLine: false,
							 | 
						||
| 
								 | 
							
														speed: false,
							 | 
						||
| 
								 | 
							
														// hideRepeat:true
							 | 
						||
| 
								 | 
							
													}) // 切换下一个视频
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										methods: {
							 | 
						||
| 
								 | 
							
											loadPlayerScript(callback) {
							 | 
						||
| 
								 | 
							
												if (!window.polyvPlayer) {
							 | 
						||
| 
								 | 
							
													const myScript = document.createElement('script');
							 | 
						||
| 
								 | 
							
													myScript.setAttribute('src', this.vodPlayerJs);
							 | 
						||
| 
								 | 
							
													myScript.onload = callback;
							 | 
						||
| 
								 | 
							
													document.body.appendChild(myScript);
							 | 
						||
| 
								 | 
							
												} else {
							 | 
						||
| 
								 | 
							
													callback();
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											loadPlayer() {
							 | 
						||
| 
								 | 
							
												const parsedUrl = new URL(this.src);
							 | 
						||
| 
								 | 
							
												this.vid = parsedUrl.searchParams.get('vid');
							 | 
						||
| 
								 | 
							
												const polyvPlayer = window.polyvPlayer;
							 | 
						||
| 
								 | 
							
												this.player = polyvPlayer({
							 | 
						||
| 
								 | 
							
													wrap: '#player',
							 | 
						||
| 
								 | 
							
													width: '100%',
							 | 
						||
| 
								 | 
							
													height: '100%',
							 | 
						||
| 
								 | 
							
													vid: this.vid,
							 | 
						||
| 
								 | 
							
													ban_history_time: "on", // 开启续播
							 | 
						||
| 
								 | 
							
													ban_seek_by_limit_time: 'on',
							 | 
						||
| 
								 | 
							
													showHd: false,
							 | 
						||
| 
								 | 
							
													showAuto: false,
							 | 
						||
| 
								 | 
							
													showLine: false,
							 | 
						||
| 
								 | 
							
													speed: false,
							 | 
						||
| 
								 | 
							
													// hideRepeat:true
							 | 
						||
| 
								 | 
							
												})
							 | 
						||
| 
								 | 
							
												this.player.on('s2j_onPlayOver', (...params) => {
							 | 
						||
| 
								 | 
							
													this.$emit('over')
							 | 
						||
| 
								 | 
							
												})
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
										destroyed() {
							 | 
						||
| 
								 | 
							
											if (this.player) {
							 | 
						||
| 
								 | 
							
												this.player.destroy();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								</script>
							 |