LIVE - + {{ s.source }} @@ -108,8 +108,9 @@ async function load() { request.get('/v1/live', { params: { pageNum: 1, pageSize: 100 } }), request.get('/v1/videos', { params: { pageNum: 1, pageSize: 100 } }) ]) - liveStreams.value = (livePage?.records || []).map((s) => ({ + liveStreams.value = (livePage?.records || []).filter((s) => ['starting', 'streaming', 'reconnecting'].includes(s.phase)).map((s) => ({ id: s.id, + dockId: s.dockId, name: s.dockId, desc: s.streamName ? `${s.streamName} · ${s.provider}` : s.provider, source: s.streamName || '--', @@ -129,6 +130,21 @@ async function load() { onMounted(load) +async function openLive(stream) { + try { + const result = await request.post(`/v1/live/${stream.dockId}/sessions`) + if (result?.session?.phase === 'streaming') { + const play = await request.get(`/v1/live/${stream.dockId}/play-url`) + if (play?.playUrl && !play.playUrl.startsWith('fake://')) window.open(play.playUrl, '_blank') + else ui.toast('控制面已验证,当前未配置可播放媒体流') + } else { + ui.toast('直播正在启动,请稍后重试') + } + } catch (e) { + ui.toast(e.message || '打开直播失败') + } +} + async function download(v) { try { const res = await request.post(`/v1/videos/${v.id}/download`) diff --git a/src/views/Monitor.vue b/src/views/Monitor.vue index f7ec6a9..028b26a 100644 --- a/src/views/Monitor.vue +++ b/src/views/Monitor.vue @@ -130,10 +130,12 @@ 实时画面 - 暂无视频流 + {{ livePhaseText }} - - 暂无实时视频数据 + + + 打开实时画面 + 关闭实时画面 @@ -244,12 +246,14 @@