From 96353435489d001c39bd445816c6e401e4c7d8a9 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 4 Sep 2026 20:22:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E9=85=8D=E9=9F=B3?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=97=B6=E9=95=BF=E8=BF=87=E6=BB=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=89=80=E6=9C=89=E9=85=8D=E9=9F=B3=E7=B4=A0?= =?UTF-8?q?=E6=9D=90=E5=AE=8C=E6=95=B4=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/pages/generate/GeneratePage.tsx | 12 ------------ .../components/GenerateStepContent.tsx | 3 --- .../generate/components/Step5VoiceSelect.tsx | 18 +----------------- 3 files changed, 1 insertion(+), 32 deletions(-) diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index f03f84d7a..6095faa93 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -16,10 +16,6 @@ import { useQuery } from "@tanstack/react-query" import { useCloneProgress } from "@/hooks/useCloneProgress" import CloneModal from "@/components/voice/CloneModal" import GenerateHeader from "./components/GenerateHeader" -import { - calculateTotalVideoDuration, - estimateTotalVideoDuration, -} from "./utils/calculateTotalVideoDuration" import FrontendPreviewPlayer from "./components/FrontendPreviewPlayer" import GenerateStepsBar from "./components/GenerateStepsBar" import GenerateStepContent from "./components/GenerateStepContent" @@ -174,13 +170,6 @@ const GeneratePage: React.FC = () => { [previewAssetsReady, currentTemplate], ) - /* ── 视频总时长计算 ── */ - const totalVideoDuration = useMemo(() => { - const exact = calculateTotalVideoDuration(previewAssets, currentTemplate ?? undefined) - if (exact > 0) return exact - return estimateTotalVideoDuration(currentTemplate ?? undefined) - }, [previewAssets, currentTemplate]) - /* ── 视频生成核心逻辑 ── */ const { generating, @@ -291,7 +280,6 @@ const GeneratePage: React.FC = () => { onCoverSettingsChange={setCoverSettings} selectedVoice={selectedVoice} onSelectedVoiceChange={setSelectedVoice} - totalVideoDuration={totalVideoDuration} onServerClipsChange={setServerClips} voiceMode={voiceMode} onVoiceModeChange={setVoiceMode} diff --git a/apps/web/src/pages/generate/components/GenerateStepContent.tsx b/apps/web/src/pages/generate/components/GenerateStepContent.tsx index b4799ee33..1b160b5ec 100644 --- a/apps/web/src/pages/generate/components/GenerateStepContent.tsx +++ b/apps/web/src/pages/generate/components/GenerateStepContent.tsx @@ -49,7 +49,6 @@ export interface GenerateStepContentProps { /* 配音 */ selectedVoice: string onSelectedVoiceChange: (id: string) => void - totalVideoDuration?: number onServerClipsChange: (clips: EditPlanClip[]) => void voiceMode: "preset" | "custom" | "clone" onVoiceModeChange: (mode: "preset" | "custom" | "clone") => void @@ -104,7 +103,6 @@ export const GenerateStepContent: React.FC = (props) = onCoverSettingsChange, selectedVoice, onSelectedVoiceChange, - totalVideoDuration, onServerClipsChange, voiceMode, selectedClonedVoice, @@ -151,7 +149,6 @@ export const GenerateStepContent: React.FC = (props) = ) case 4: diff --git a/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx b/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx index 0d75eeebd..cbebf2ad9 100644 --- a/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx +++ b/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx @@ -1,7 +1,6 @@ /** * Step 5 配音选择组件 * 展示用户已上传的配音素材,支持选中、预览播放 - * 根据视频总时长自动过滤时长差异过大的配音(±10%以内) */ import React, { useState, useRef, useCallback } from "react" import { useNavigate } from "react-router-dom" @@ -13,7 +12,6 @@ import type { AssetItem } from "@/api/assets" interface Step5VoiceSelectProps { selectedVoice: string onSelectedVoiceChange: (id: string) => void - totalVideoDuration?: number } /** 获取素材实际时长(优先顶层 duration,fallback 到 metadata.duration) */ @@ -45,7 +43,6 @@ const formatFileSize = (bytes?: number): string => { const Step5VoiceSelect: React.FC = ({ selectedVoice, onSelectedVoiceChange, - totalVideoDuration = 0, }) => { const navigate = useNavigate() const [playingId, setPlayingId] = useState(null) @@ -57,19 +54,6 @@ const Step5VoiceSelect: React.FC = ({ queryFn: () => getAssetsByKind("voice", { limit: 50 }), }) - // 根据视频总时长过滤配音:只保留时长在 ±10% 以内的素材,AI 音色始终展示 - const filteredMaterials = React.useMemo(() => { - if (totalVideoDuration <= 0) return materials - return materials.filter((item) => { - // AI 音色没有固定时长,始终保留 - if (isAiVoice(item)) return true - const duration = getDuration(item) - if (duration <= 0) return true - const ratio = duration / totalVideoDuration - return ratio >= 0.9 && ratio <= 1.1 - }) - }, [materials, totalVideoDuration]) - /** 切换播放/暂停 */ const togglePlay = useCallback( (material: AssetItem) => { @@ -175,7 +159,7 @@ const Step5VoiceSelect: React.FC = ({ gap: 12, }} > - {filteredMaterials.map((item) => { + {materials.map((item) => { const isSelected = selectedVoice === item.id const isPlaying = playingId === item.id -- 2.54.0 From 13eecf422b09f8903e0cff6da19eba53de74ed7d Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 4 Sep 2026 20:27:32 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=20GeneratePage.ts?= =?UTF-8?q?x=20=E4=B8=8D=E5=86=8D=E9=9C=80=E8=A6=81=E7=9A=84=20eslint-disa?= =?UTF-8?q?ble=20=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/pages/generate/GeneratePage.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/web/src/pages/generate/GeneratePage.tsx b/apps/web/src/pages/generate/GeneratePage.tsx index 6095faa93..db681da43 100644 --- a/apps/web/src/pages/generate/GeneratePage.tsx +++ b/apps/web/src/pages/generate/GeneratePage.tsx @@ -124,7 +124,6 @@ const GeneratePage: React.FC = () => { cancelled = true controller.abort() } - // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedVoice, selectedClonedVoice, titleSettings.title, voiceMaterials]) /* ── 克隆声音 ── */ -- 2.54.0 From b139463e530f9b094f260dfd075b4d00dd6b2718 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 4 Sep 2026 20:31:37 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E6=AE=8B=E7=95=99?= =?UTF-8?q?=E7=9A=84=E8=BF=87=E6=BB=A4=E6=8F=90=E7=A4=BA=E6=96=87=E6=A1=88?= =?UTF-8?q?=EF=BC=88totalVideoDuration/filteredMaterials=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/pages/generate/components/Step5VoiceSelect.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx b/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx index cbebf2ad9..1fa40857f 100644 --- a/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx +++ b/apps/web/src/pages/generate/components/Step5VoiceSelect.tsx @@ -259,11 +259,6 @@ const Step5VoiceSelect: React.FC = ({ ) })} - {totalVideoDuration > 0 && filteredMaterials.length < materials.length && ( -

- 已根据视频时长({Math.round(totalVideoDuration)}s)自动过滤时长差异过大的配音 -

- )} ) } -- 2.54.0