处理标签切换视频暂停的BUG

This commit is contained in:
lxj
2025-09-08 02:04:27 +08:00
parent ba6e865219
commit 50928d9d33

View File

@@ -64,7 +64,14 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { onMounted, onUnmounted, ref, toRaw } from 'vue'; import {
onActivated,
onDeactivated,
onMounted,
onUnmounted,
ref,
toRaw,
} from 'vue';
import { Loading, Page } from '@vben/common-ui'; import { Loading, Page } from '@vben/common-ui';
import ChannelTree from './channel-tree.vue'; import ChannelTree from './channel-tree.vue';
import mpegts from 'mpegts.js'; import mpegts from 'mpegts.js';
@@ -363,7 +370,7 @@ function doPlayer(nodeData: any, index: number = 0) {
streamProxy(nodeData, (res: AddStreamProxyResult) => { streamProxy(nodeData, (res: AddStreamProxyResult) => {
const host = window.location.host; const host = window.location.host;
const url = `ws://${host}/${res.app}/${res.streamId}.live.flv`; const url = `ws://${host}/${res.app}/${res.streamId}.live.flv`;
// const url = `ws://183.230.235.66:11010/${res.app}/${res.streamId}.live.flv`; // const url = `ws://192.168.24.101:28080/${res.app}/${res.streamId}.live.flv`;
// 将url 绑定到 nodeData // 将url 绑定到 nodeData
nodeData.url = url; nodeData.url = url;
closePlayer(index); closePlayer(index);
@@ -402,13 +409,13 @@ function doPlayer(nodeData: any, index: number = 0) {
} }
} }
function closePlayVieo(plInfo: any) { function closePlayVieo(player: any) {
if (plInfo) { if (player) {
try { try {
plInfo.pause(); // 暂停 player.pause(); // 暂停
plInfo.unload(); // 卸载 player.unload(); // 卸载
plInfo.detachMediaElement(); player.detachMediaElement();
plInfo.destroy(); // 销毁 player.destroy(); // 销毁
treeSelectHandle(); treeSelectHandle();
} catch (e) { } catch (e) {
console.log('播放器关闭失败e=', e); console.log('播放器关闭失败e=', e);
@@ -448,6 +455,28 @@ onUnmounted(() => {
} }
}); });
onActivated(() => {
if (cachePlayerData.length != 0) {
cachePlayerData.forEach((v, k) => {
doPlayer(v, k);
});
}
cachePlayerData = [];
});
let cachePlayerData: any[] = [];
// 离开页面触发
onDeactivated(() => {
// 为了避免浪费带宽和性能,离开页面的时候默认关闭当前播放的视频
playerList.forEach((playerInfo) => {
if (playerInfo) {
const { data, player } = playerInfo;
cachePlayerData.push(data);
closePlayer(player);
}
});
});
function catchUp() { function catchUp() {
playerList.forEach((playerData) => { playerList.forEach((playerData) => {
if (playerData) { if (playerData) {