From 31bfcf302405dcb1012ad772aa686e69de23d2cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=8F=E6=9D=B0?= Date: Wed, 19 Aug 2026 17:33:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20HEVC=20description=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=AE=8C=E6=95=B4box+=E6=A0=87=E9=A2=98=E5=88=86=E5=89=B2?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97=20(#1442)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - subBoxStart回退到+70 - hvcC/avcC返回完整box(含header)供WebCodecs decoder - drawTitle添加调试日志 --- apps/web/src/pages/generate/hooks/useCanvasPlayer.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/web/src/pages/generate/hooks/useCanvasPlayer.ts b/apps/web/src/pages/generate/hooks/useCanvasPlayer.ts index 41d35fe13..f11c4a73e 100644 --- a/apps/web/src/pages/generate/hooks/useCanvasPlayer.ts +++ b/apps/web/src/pages/generate/hooks/useCanvasPlayer.ts @@ -44,16 +44,15 @@ function findCodecConfig(buffer: ArrayBuffer, start: number, end: number): Array // 子 box 从 entryOffset + 8 + 6 + 2 + 16 + 2 + 2 + 2 + 2 + 4 + 2 + 2 + 2 + 2 = entryOffset + 78 // 更简单的做法:扫描 entry 内的子 box const entryEnd = entryOffset + entrySize - const subBoxStart = entryOffset + 8 + 68 // VisualSampleEntry 固定字段共 68 字节 + const subBoxStart = entryOffset + 8 + 70 // VisualSampleEntry 固定字段共 70 字节 const result = findCodecConfig(buffer, subBoxStart, entryEnd) if (result) return result entryOffset += entrySize } } else if (type === "avcC" || type === "hvcC") { - // 找到目标 box,返回其内容(不含 box header) - const dataStart = offset + 8 - const dataSize = size - 8 - return buffer.slice(dataStart, dataStart + dataSize) + // 找到目标 box,返回完整 box(含 header) + // 返回完整 box(含 size + type header),WebCodecs HEVC decoder 需要 + return buffer.slice(offset, offset + size) } if (size === 0) break @@ -432,6 +431,7 @@ export function useCanvasPlayer( // 按 "/" 分割为多行("/" 作为手动换行符) const lines = title.text.split(/[//⁄∕]/) + console.log("[drawTitle] 原始标题:", JSON.stringify(title.text), "分割后:", lines) const lineHeight = fontSize * 1.3 const totalHeight = lines.length * lineHeight -- 2.54.0