画面问题

This commit is contained in:
2026-02-25 14:56:39 +08:00
parent 97bfa5dfbc
commit 214c1f0f37
3 changed files with 24 additions and 1 deletions

View File

@@ -131,7 +131,14 @@
</div>
<div v-else class="upload-preview">
<video :src="videoState.uploadedVideo" controls class="preview-video-player"></video>
<video
:src="videoState.uploadedVideo"
controls
playsinline
preload="metadata"
class="preview-video-player"
@error="handleVideoError"
></video>
<p class="upload-filename">{{ videoState.videoFile?.name }}</p>
<button class="change-video-btn" @click="replaceVideo">更换</button>
</div>
@@ -262,6 +269,7 @@ const {
handleSelectFromLibrary,
handleVideoSelect,
handleVideoLoaded,
handleVideoError,
replaceVideo,
// UI 辅助方法

View File

@@ -59,6 +59,11 @@ export function useDigitalHumanGeneration() {
return
}
// 释放旧的 blob URL
if (videoState.value.uploadedVideo && videoState.value.uploadedVideo.startsWith('blob:')) {
URL.revokeObjectURL(videoState.value.uploadedVideo)
}
videoState.value.videoFile = file
videoState.value.uploadedVideo = URL.createObjectURL(file)
videoState.value.selectedVideo = null
@@ -119,6 +124,10 @@ export function useDigitalHumanGeneration() {
}
function resetVideoState(): void {
// 释放 blob URL 避免内存泄漏
if (videoState.value.uploadedVideo && videoState.value.uploadedVideo.startsWith('blob:')) {
URL.revokeObjectURL(videoState.value.uploadedVideo)
}
videoState.value.uploadedVideo = ''
videoState.value.videoFile = null
videoState.value.selectedVideo = null

View File

@@ -290,6 +290,11 @@ export function useIdentifyFaceController() {
digitalHuman.videoState.value.previewVideoUrl = videoUrl
}
function handleVideoError(event: Event): void {
console.error('视频加载失败:', event)
message.error('视频无法播放,请尝试其他视频文件')
}
// ==================== UI 工具方法 ====================
function formatDuration(seconds: number): string {
@@ -347,6 +352,7 @@ export function useIdentifyFaceController() {
handleSelectFromLibrary,
handleVideoSelect,
handleVideoLoaded,
handleVideoError,
// UI 工具
formatDuration,