From 4bbee5d22e0ab673f513637cd808a46f5d250dc4 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 17 Feb 2026 17:36:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(video-edit):=20worker=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E7=94=A8=E6=97=B6=E9=99=8D=E7=BA=A7=E4=B8=BA?= =?UTF-8?q?=E6=97=A0worker=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/static/public/js/video.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/static/public/js/video.js b/app/static/public/js/video.js index 21d143b..f1e83cb 100644 --- a/app/static/public/js/video.js +++ b/app/static/public/js/video.js @@ -608,6 +608,14 @@ throw lastErr || new Error('blob_url_candidates_failed'); } + async function toOptionalBlobUrl(urls, mime, timeoutMs = 12000) { + try { + return await toBlobUrlFromCandidates(urls, mime, timeoutMs); + } catch (e) { + return ''; + } + } + async function ensureFfmpeg() { if (ffmpegLoaded && ffmpegInstance) return ffmpegInstance; if (ffmpegLoading) { @@ -643,7 +651,7 @@ // 统一转为同源 blob URL,避免跨域 Worker 限制,同时实现多源超时切换。 const coreURL = await toBlobUrlFromCandidates(candidates.coreURL, 'text/javascript'); const wasmURL = await toBlobUrlFromCandidates(candidates.wasmURL, 'application/wasm'); - const workerURL = await toBlobUrlFromCandidates(candidates.workerURL, 'text/javascript'); + const workerURL = await toOptionalBlobUrl(candidates.workerURL, 'text/javascript'); if (typeof FFmpegCtor === 'function') { try { // 兼容 @ffmpeg/ffmpeg 0.12+ 的 class FFmpeg @@ -653,11 +661,11 @@ ffmpegInstance = FFmpegCtor({ log: false }); } if (ffmpegInstance && typeof ffmpegInstance.load === 'function') { - await ffmpegInstance.load({ - coreURL, - wasmURL, - workerURL, - }); + const loadConfig = { coreURL, wasmURL }; + if (workerURL) { + loadConfig.workerURL = workerURL; + } + await ffmpegInstance.load(loadConfig); } } if (!ffmpegInstance) {