From 05761697738a0d623f98c654061307be1bfb7d5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E4=BD=B3=E8=89=BA?= <13935794190@163.com> Date: Mon, 27 Jul 2026 17:44:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=88=86=E6=AC=BE=E5=88=87=E6=8D=A2=E7=BC=A9?= =?UTF-8?q?=E7=95=A5=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dist/assets/{index-_th8Je05.js => index-CX-LjAAz.js} | 2 +- video-gen-app/dist/index.html | 2 +- video-gen-app/src/pages/InitialReplication.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename video-gen-app/dist/assets/{index-_th8Je05.js => index-CX-LjAAz.js} (99%) diff --git a/video-gen-app/dist/assets/index-_th8Je05.js b/video-gen-app/dist/assets/index-CX-LjAAz.js similarity index 99% rename from video-gen-app/dist/assets/index-_th8Je05.js rename to video-gen-app/dist/assets/index-CX-LjAAz.js index 7800ced5..396ba229 100644 --- a/video-gen-app/dist/assets/index-_th8Je05.js +++ b/video-gen-app/dist/assets/index-CX-LjAAz.js @@ -579,7 +579,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho from { opacity: 0; transform: translateY(6px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } } - `}),(0,$.jsx)(nK,{open:ke,title:(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,$.jsx)(`div`,{style:{width:4,height:20,background:`linear-gradient(180deg, #8b5cf6 0%, #ddd6fe 100%)`,borderRadius:2}}),(0,$.jsx)(`span`,{style:{fontSize:16,fontWeight:700,color:`#8b5cf6`,letterSpacing:.4},children:`预览`})]}),onCancel:Cn,width:800,footer:(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,padding:`16px 24px`,background:`rgba(255,255,255,0.6)`,borderTop:`1px solid rgba(139, 92, 246, 0.08)`},children:(0,$.jsx)(Z,{type:`primary`,icon:(0,$.jsx)(f0,{}),onClick:wn,style:{borderRadius:10,background:`linear-gradient(135deg, #8b5cf6 0%, #ddd6fe 100%)`,border:`none`,boxShadow:`0 8px 18px rgba(47, 52, 64, 0.15)`},disabled:ze(je),children:ze(je)?`资源已过期`:`下载`})}),centered:!0,style:{borderRadius:16},styles:{body:{display:`flex`,alignItems:`center`,justifyContent:`center`,minHeight:`400px`},header:{background:`rgba(255,255,255,0.6)`,backdropFilter:`blur(10px)`,borderBottom:`1px solid rgba(139, 92, 246, 0.08)`,padding:`16px 24px`}},children:(0,$.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`100%`,height:`100%`},children:ze(je)?(0,$.jsx)(`div`,{style:{textAlign:`center`,padding:`40px`},children:(0,$.jsx)(`p`,{style:{fontSize:16,color:`#A45B5B`,marginBottom:16},children:`图片/视频资源已过期,请刷新重新加载~`})}):Ne===`image`?(0,$.jsx)(`img`,{src:`${je}`,alt:`预览`,style:{width:`100%`,maxHeight:`400px`,objectFit:`contain`}}):(0,$.jsx)(`video`,{ref:Fe,src:`${je}`,controls:!0,style:{maxWidth:`100%`,maxHeight:`400px`}})})}),(0,$.jsx)(nK,{open:Be,title:(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,$.jsx)(`div`,{style:{width:4,height:20,background:`linear-gradient(180deg, #8b5cf6 0%, #ddd6fe 100%)`,borderRadius:2}}),(0,$.jsx)(`span`,{style:{fontSize:16,fontWeight:700,color:`#8b5cf6`,letterSpacing:.4},children:`附件预览`})]}),onCancel:()=>{if(Ye.current){let e=Ye.current;e.pause(),e.muted=!0,e.currentTime=0}Ve(!1)},afterClose:()=>{if(Ye.current){let e=Ye.current;e.pause(),e.muted=!0}},width:800,footer:(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,padding:`16px 24px`,background:`rgba(255,255,255,0.6)`,borderTop:`1px solid rgba(139, 92, 246, 0.08)`},children:(0,$.jsx)(Z,{type:`primary`,icon:(0,$.jsx)(f0,{}),onClick:()=>{if(!He)return;let e=document.createElement(`a`);e.href=`https://ceshi.apiforeign.minzhongzc.com${He}&download=1`,e.download=qe||(We===`image`?`image.png`:`video.mp4`),document.body.appendChild(e),e.click(),document.body.removeChild(e)},style:{borderRadius:10,background:`linear-gradient(135deg, #8b5cf6 0%, #ddd6fe 100%)`,border:`none`,boxShadow:`0 8px 18px rgba(47, 52, 64, 0.15)`},children:`下载`})}),centered:!0,style:{borderRadius:16},styles:{body:{display:`flex`,alignItems:`center`,justifyContent:`center`,minHeight:`400px`},header:{background:`rgba(255,255,255,0.6)`,backdropFilter:`blur(10px)`,borderBottom:`1px solid rgba(139, 92, 246, 0.08)`,padding:`16px 24px`}},children:(0,$.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`100%`,height:`100%`},children:We===`image`?(0,$.jsx)(`img`,{src:_n(He),alt:`预览`,style:{width:`100%`,maxHeight:`400px`,objectFit:`contain`}}):(0,$.jsx)(`video`,{ref:Ye,src:_n(He),controls:!0,playsInline:!0,style:{maxWidth:`100%`,maxHeight:`400px`}})})}),(0,$.jsx)(w7,{open:pe,libraryType:he,onClose:()=>me(!1),onSelect:gn,selectedIds:F.map(e=>e.private_asset_id).filter(Boolean),maxCount:Math.max(1,jn+Mn),maxImageCount:z,maxVideoCount:B,usedImageCount:F.filter(e=>e.type===`image`).length,usedVideoCount:F.filter(e=>e.type===`video`).length,usedVideoDuration:F.filter(e=>e.type===`video`).reduce((e,t)=>e+(t.duration||0),0),maxVideoDuration:15,accept:c===`image`?`image/*`:`image/*,video/*`})]})},{Header:Ise,Content:Lse}=NW,{TextArea:Rse}=wW,zse=`https://ceshi.apiforeign.minzhongzc.com`,Bse=e=>{if(!e)return!1;let t=e.supportsUniversalReference??e.supports_universal_reference,n=e.maxImageCount??e.max_image_count;return t!==!1&&(n==null||Number(n)>=1)},r9=e=>e?/^https?:\/\//i.test(e)||e.startsWith(`blob:`)?e:`${zse}${e}`:``,Vse=()=>{let e=Je(),{user:t,optimizeHoldCredits:n}=l7(),[r,i]=(0,S.useState)([]),[a,o]=(0,S.useState)(1),[s,c]=(0,S.useState)(20),[l,u]=(0,S.useState)(0),[d,f]=(0,S.useState)(``),[p,m]=(0,S.useState)([]),[h,g]=(0,S.useState)(1),[_,v]=(0,S.useState)(20),[y,b]=(0,S.useState)(0),[x,C]=(0,S.useState)(``),[w,T]=(0,S.useState)(``),[E,D]=(0,S.useState)(``),[O,k]=(0,S.useState)(null),[A,j]=(0,S.useState)(``),[M,N]=(0,S.useState)(``),[P,F]=(0,S.useState)(null),[I,L]=(0,S.useState)(null),[R,z]=(0,S.useState)(``),[B,V]=(0,S.useState)(``),[H,U]=(0,S.useState)(!1),[W,G]=(0,S.useState)(!1),[K,ee]=(0,S.useState)([]),[q,te]=(0,S.useState)(``),[ne,re]=(0,S.useState)(5),[ie,J]=(0,S.useState)(`9:16`),[ae,oe]=(0,S.useState)(`480p`),[se,ce]=(0,S.useState)(!1),[le,ue]=(0,S.useState)(!1),[de,fe]=(0,S.useState)({ratios:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`],resolutions:[`480p`,`720p`,`1080p`],durations:[5,8,10,12,15]}),[pe,me]=(0,S.useState)([]),[he,ge]=(0,S.useState)(!1),_e=(0,S.useRef)(null),ve=(0,S.useRef)(null),ye=(0,S.useRef)(null);(0,S.useEffect)(()=>{P5().then(e=>{let t=e?.engine?.video||[];if(ee(t),t.length>0){let e=t[0];te(e.id),J(e.supportedRatios?.includes(`9:16`)?`9:16`:e.supportedRatios?.[0]||`9:16`),oe(e.supportedResolutions?.[0]||`480p`),re(e.supportedDurations?.[0]||5)}}).catch(()=>Q.error(`视频引擎加载失败`)),L5().then(e=>me(Array.isArray(e)?e:[])).catch(()=>me([]))},[]),(0,S.useEffect)(()=>{let e=e=>{let t=e.target;!t.closest(`.image-settings-popover`)&&!t.closest(`.image-settings-trigger`)&&(ce(!1),ue(!1))};return document.addEventListener(`click`,e),()=>document.removeEventListener(`click`,e)},[]);let be=K.find(e=>e.id===q),xe=!R||Bse(be),Se=(()=>{let e=pe.find(e=>e.modelConfigId===q&&e.genType===`video`&&e.resolution===ae);if(!e)return 0;let t=(Number(e.baseCredits||0)+Number(e.perSecondCredits||0)*ne)*Number(e.ratio||1);return R&&(t+=(Number(e.inputImageBaseCredits||0)+Number(e.inputImagePerImageCredits||0))*Number(e.inputImageRatio||1)),Number(t.toFixed(2))})(),Ce=(e,t,n=!1)=>{R5(e,t).then(e=>{if(e.items){m(n?t=>t.map(t=>{let n=e.items.find(e=>e.id===t.id);return n&&n.status!==t.status?n:t}):e.items);let t=e.items.some(e=>e.status===`processing`);t&&!_e.current?_e.current=setInterval(()=>{Ce(h,_,!0)},5e3):!t&&_e.current&&(clearInterval(_e.current),_e.current=null)}e.total!==void 0&&b(e.total)}).catch(e=>{})},we=e=>{g(e),Ce(e,_)},Te=(e,t,n=!1,r)=>{R5(e,t,r).then(e=>{if(e.items){i(n?t=>t.map(t=>{let n=e.items.find(e=>e.id===t.id);return n&&n.status!==t.status?n:t}):e.items);let t=e.items.some(e=>e.status===`processing`);t&&!ve.current?ve.current=setInterval(()=>{Te(a,s,!0,d)},5e3):!t&&ve.current&&(clearInterval(ve.current),ve.current=null)}e.total!==void 0&&u(e.total)}).catch(e=>{})};(0,S.useEffect)(()=>(Te(a,s),Ce(h,_),()=>{_e.current&&=(clearInterval(_e.current),null),ve.current&&=(clearInterval(ve.current),null)}),[]);let Ee=(e,t)=>{o(e),c(t),Te(e,t,!1,d)},De=()=>{o(1),Te(1,s,!1,d)},Oe=async e=>{if(!e.type.startsWith(`video/`))return Q.error(`只能上传视频文件`),!1;if(!(e.size/1024/1024<50))return Q.error(`视频大小不能超过50MB`),!1;let t=document.createElement(`video`);return t.preload=`metadata`,new Promise(n=>{t.onloadedmetadata=async()=>{if(t.duration<2){Q.error(`视频时长不能少于2秒`),URL.revokeObjectURL(t.src),n(!1);return}if(t.duration>=16){Q.error(`视频时长不能超过15秒`),URL.revokeObjectURL(t.src),n(!1);return}U(!0);try{let r=await Gie(e,t.duration);k(e),j(r.url),N(r.resource_id||``),F(t.duration);let i=Math.round(t.duration);re(de.durations.reduce((e,t)=>Math.abs(t-i){Q.error(`视频文件无效`),URL.revokeObjectURL(t.src),n(!1)},t.src=URL.createObjectURL(e)})},ke=async e=>{if(!e.type.startsWith(`image/`))return Q.error(`只能上传图片文件`),!1;if(!(e.size/1024/1024<10))return Q.error(`图片大小不能超过10MB`),!1;let t=new Image;return new Promise(n=>{t.onload=async()=>{let r=t.width/t.height;Math.abs(r-.75)<.1||Math.abs(r-.5625),G(!0);try{let t=await Wie(e);L(e),z(t.url),V(t.resource_id||``),Q.success(`图片上传成功`),n(!1)}catch(e){let t=``;if(e instanceof Error)try{t=JSON.parse(e.message).detail||e.message}catch{t=e.message}Q.error(t||`图片上传失败`),n(!1)}finally{G(!1),URL.revokeObjectURL(t.src)}},t.onerror=()=>{Q.error(`图片文件无效`),URL.revokeObjectURL(t.src),n(!1)},t.src=URL.createObjectURL(e)})},Ae=()=>{A&&URL.revokeObjectURL(A),k(null),j(``)},je=()=>{R&&URL.revokeObjectURL(R),L(null),z(``)},Me=()=>{if(!A){Q.warning(`请上传复刻视频`);return}if(!q||!ne||!ie||!ae){Q.warning(`请选择完整的视频生成参数`);return}if(!xe){Q.warning(`当前视频引擎不支持参考图片,请移除素材图片或切换引擎`);return}let t=ye.current||`hot_v2_${Date.now()}_${Math.random().toString(16).slice(2)}`;ye.current=t,sae({material_video_url:A,material_image_url:R||void 0,material_video_resource_id:M||void 0,material_image_resource_id:B||void 0,material_video_duration_seconds:P||void 0,source_project_name:x.trim()||void 0,target_project_name:w.trim()||void 0,project_description:E.trim()||void 0,core_content_point:E.trim()||void 0,video_config:{engine_id:q,duration:ne,aspect_ratio:ie,resolution:ae},idempotency_key:t}).then(t=>{let n=t.id||t.projectId||t.detail?.id;ye.current=null,j(``),N(``),F(null),z(``),V(``),L(null),C(``),T(``),D(``),Ce(1,20),Q.success(`项目已创建,视频提词正在生成`),n&&e(`/initial/${n}/initialinfo?flow_version=v2`)}).catch(e=>{Q.error(e?.message||`视频开头复刻失败`)})};return(0,$.jsxs)(`div`,{className:`replication-container`,style:{margin:`-24px -32px -32px`,height:`calc(100vh - 34px)`,display:`flex`,justifyContent:`space-between`,alignItems:`stretch`,gap:`2%`,position:`relative`,boxSizing:`border-box`},children:[(0,$.jsxs)(`div`,{className:`replication-preview`,style:{width:`68%`,background:`#f1f2f3`,backdropFilter:`blur(20px)`,display:`flex`,flexDirection:`column`,borderRadius:20,overflow:`hidden`,position:`relative`,zIndex:10},children:[(0,$.jsxs)(`div`,{className:`animate-fadeInUp`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,padding:`16px 24px`,paddingBottom:0,background:`linear-gradient(135deg, rgba(99, 102, 241, 0.06) 0%, rgba(139, 92, 246, 0.04) 100%)`,backdropFilter:`blur(10px)`,border:`1px solid rgba(99, 102, 241, 0.08)`,position:`relative`,overflow:`hidden`,flexWrap:`wrap`,gap:12},children:[(0,$.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16,paddingBottom:12},children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h2`,{style:{margin:0,fontSize:18,fontWeight:700,background:`linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)`,WebkitBackgroundClip:`text`,WebkitTextFillColor:`transparent`,backgroundClip:`text`},children:`爆款复刻`}),(0,$.jsx)(`p`,{style:{fontSize:13,color:`#64748b`,margin:`4px 0 0 0`},children:`上传参考视频与产品图片,一键复刻爆款视频开头`})]})}),(0,$.jsx)(Z,{type:`primary`,ghost:!0,style:{borderRadius:10,padding:`6px 16px`,fontSize:13,background:`rgba(99, 102, 241, 0.1)`,borderColor:`rgba(99, 102, 241, 0.2)`,color:`#6366f1`},onClick:()=>ge(!0),children:`创作记录`})]}),(0,$.jsx)(`div`,{style:{flex:1,background:`transparent`,borderRight:`1px solid rgba(99, 102, 241, 0.08)`,overflowY:`auto`,scrollbarWidth:`none`},children:p.length>0?(0,$.jsxs)(`div`,{style:{height:`100%`,padding:`24px`},children:[(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:24},children:(0,$.jsx)(`h2`,{style:{margin:0,fontSize:16,fontWeight:600,color:`#1e293b`},children:`历史生成作品`})}),(0,$.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fill, minmax(190px, 1fr))`,gap:16},children:p.map(t=>(0,$.jsxs)(`div`,{style:{border:`1px solid rgba(99, 102, 241, 0.6)`,backdropFilter:`blur(10px)`,borderRadius:16,overflow:`hidden`,boxShadow:`0 4px 16px rgba(99, 102, 241, 0.06)`,cursor:`pointer`,transition:`transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1)`},onClick:()=>e(`/initial/${t.id}/initialinfo?flow_version=${t.flowVersion===`v2`?`v2`:`v1`}`),onMouseEnter:e=>{e.currentTarget.style.transform=`translateY(-6px)`,e.currentTarget.style.boxShadow=`0 12px 32px rgba(99, 102, 241, 0.12)`},onMouseLeave:e=>{e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`0 4px 16px rgba(99, 102, 241, 0.06)`},children:[(0,$.jsxs)(`div`,{style:{position:`relative`,aspectRatio:`1/1`},children:[t.finalVideoUrl?(0,$.jsx)(`img`,{src:`https://ceshi.apiforeign.minzhongzc.com${t.finalVideoCoverUrl}`,alt:t.targetProjectName,style:{width:`100%`,height:`100%`,objectFit:`cover`}}):(0,$.jsx)(`div`,{style:{width:`100%`,height:`100%`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,$.jsx)(`div`,{style:{width:60,height:60,borderRadius:`50%`,background:`linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,$.jsx)(X8,{style:{fontSize:24,color:`#fff`}})})}),(0,$.jsx)(`div`,{style:{position:`absolute`,bottom:8,right:8,padding:`4px 12px`,background:`rgba(0,0,0,0.7)`,borderRadius:16,fontSize:10,color:`#fff`,backdropFilter:`blur(4px)`},children:(()=>{let e=t.status,n=t.current_step_code||t.currentStepCode;if(n===`image_prompt_optimize`)switch(e){case`waiting_user`:return`等待融合图生成`;case`processing`:return`图片提示词生成中`;case`completed`:return`图片提示词生成成功`;case`failed`:return`图片提示词生成失败`;default:return e||`待处理`}else if(n===`image_generate`)switch(e){case`waiting_user`:return`等待生成视频提示词`;case`processing`:return`融合图生成中`;case`completed`:return`融合图生成成功`;case`failed`:return`融合图生成失败`;default:return e||`待处理`}else if(n===`video_prompt_optimize`)switch(e){case`waiting_user`:return`等待最终视频生成`;case`processing`:return`视频提示词生成中`;case`completed`:return`视频提示词生成成功`;case`failed`:return`视频提示词生成失败`;default:return e||`待处理`}else if(n===`video_generate`)switch(e){case`waiting_user`:return``;case`processing`:return`最终视频生成中`;case`completed`:return`最终视频生成成功`;case`failed`:return`最终视频生成失败`;default:return e||`待处理`}else if(n===`material_input`)switch(e){case`waiting_user`:return`等待生成图片提示词`;case`processing`:return`素材处理中`;case`completed`:return`素材上传成功`;case`failed`:return`素材上传失败`;default:return e||`待处理`}else return{pending:`子任务待处理`,waiting_user:`等待用户确认或触发`,processing:`子任务处理中`,completed:`子任务完成`,failed:`子任务失败`,cancelled:`子任务取消`}[e]||e||`待处理`})()})]}),(0,$.jsxs)(`div`,{style:{padding:14},children:[(0,$.jsx)(`h4`,{style:{margin:0,fontSize:14,fontWeight:600,color:`#1e293b`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:t.targetProjectName||`未命名作品`}),(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginTop:6},children:[(0,$.jsx)(`p`,{style:{margin:0,fontSize:12,color:`#64748b`},children:t.createdAt?new Date(t.createdAt).toLocaleDateString(`zh-CN`):``}),(()=>{let e=t.status;return e===`waiting_user`?(0,$.jsx)(`span`,{style:{fontSize:11,color:`#f59e0b`},children:`等待下一步`}):e===`processing`?(0,$.jsxs)(`span`,{style:{fontSize:11,color:`#6366f1`,display:`flex`,alignItems:`center`},children:[(0,$.jsx)(`span`,{children:`进行中`}),(0,$.jsx)(`span`,{style:{animation:`dots 1s infinite`},children:`...`}),(0,$.jsx)(`style`,{children:` + `}),(0,$.jsx)(nK,{open:ke,title:(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,$.jsx)(`div`,{style:{width:4,height:20,background:`linear-gradient(180deg, #8b5cf6 0%, #ddd6fe 100%)`,borderRadius:2}}),(0,$.jsx)(`span`,{style:{fontSize:16,fontWeight:700,color:`#8b5cf6`,letterSpacing:.4},children:`预览`})]}),onCancel:Cn,width:800,footer:(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,padding:`16px 24px`,background:`rgba(255,255,255,0.6)`,borderTop:`1px solid rgba(139, 92, 246, 0.08)`},children:(0,$.jsx)(Z,{type:`primary`,icon:(0,$.jsx)(f0,{}),onClick:wn,style:{borderRadius:10,background:`linear-gradient(135deg, #8b5cf6 0%, #ddd6fe 100%)`,border:`none`,boxShadow:`0 8px 18px rgba(47, 52, 64, 0.15)`},disabled:ze(je),children:ze(je)?`资源已过期`:`下载`})}),centered:!0,style:{borderRadius:16},styles:{body:{display:`flex`,alignItems:`center`,justifyContent:`center`,minHeight:`400px`},header:{background:`rgba(255,255,255,0.6)`,backdropFilter:`blur(10px)`,borderBottom:`1px solid rgba(139, 92, 246, 0.08)`,padding:`16px 24px`}},children:(0,$.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`100%`,height:`100%`},children:ze(je)?(0,$.jsx)(`div`,{style:{textAlign:`center`,padding:`40px`},children:(0,$.jsx)(`p`,{style:{fontSize:16,color:`#A45B5B`,marginBottom:16},children:`图片/视频资源已过期,请刷新重新加载~`})}):Ne===`image`?(0,$.jsx)(`img`,{src:`${je}`,alt:`预览`,style:{width:`100%`,maxHeight:`400px`,objectFit:`contain`}}):(0,$.jsx)(`video`,{ref:Fe,src:`${je}`,controls:!0,style:{maxWidth:`100%`,maxHeight:`400px`}})})}),(0,$.jsx)(nK,{open:Be,title:(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12},children:[(0,$.jsx)(`div`,{style:{width:4,height:20,background:`linear-gradient(180deg, #8b5cf6 0%, #ddd6fe 100%)`,borderRadius:2}}),(0,$.jsx)(`span`,{style:{fontSize:16,fontWeight:700,color:`#8b5cf6`,letterSpacing:.4},children:`附件预览`})]}),onCancel:()=>{if(Ye.current){let e=Ye.current;e.pause(),e.muted=!0,e.currentTime=0}Ve(!1)},afterClose:()=>{if(Ye.current){let e=Ye.current;e.pause(),e.muted=!0}},width:800,footer:(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,padding:`16px 24px`,background:`rgba(255,255,255,0.6)`,borderTop:`1px solid rgba(139, 92, 246, 0.08)`},children:(0,$.jsx)(Z,{type:`primary`,icon:(0,$.jsx)(f0,{}),onClick:()=>{if(!He)return;let e=document.createElement(`a`);e.href=`https://ceshi.apiforeign.minzhongzc.com${He}&download=1`,e.download=qe||(We===`image`?`image.png`:`video.mp4`),document.body.appendChild(e),e.click(),document.body.removeChild(e)},style:{borderRadius:10,background:`linear-gradient(135deg, #8b5cf6 0%, #ddd6fe 100%)`,border:`none`,boxShadow:`0 8px 18px rgba(47, 52, 64, 0.15)`},children:`下载`})}),centered:!0,style:{borderRadius:16},styles:{body:{display:`flex`,alignItems:`center`,justifyContent:`center`,minHeight:`400px`},header:{background:`rgba(255,255,255,0.6)`,backdropFilter:`blur(10px)`,borderBottom:`1px solid rgba(139, 92, 246, 0.08)`,padding:`16px 24px`}},children:(0,$.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`100%`,height:`100%`},children:We===`image`?(0,$.jsx)(`img`,{src:_n(He),alt:`预览`,style:{width:`100%`,maxHeight:`400px`,objectFit:`contain`}}):(0,$.jsx)(`video`,{ref:Ye,src:_n(He),controls:!0,playsInline:!0,style:{maxWidth:`100%`,maxHeight:`400px`}})})}),(0,$.jsx)(w7,{open:pe,libraryType:he,onClose:()=>me(!1),onSelect:gn,selectedIds:F.map(e=>e.private_asset_id).filter(Boolean),maxCount:Math.max(1,jn+Mn),maxImageCount:z,maxVideoCount:B,usedImageCount:F.filter(e=>e.type===`image`).length,usedVideoCount:F.filter(e=>e.type===`video`).length,usedVideoDuration:F.filter(e=>e.type===`video`).reduce((e,t)=>e+(t.duration||0),0),maxVideoDuration:15,accept:c===`image`?`image/*`:`image/*,video/*`})]})},{Header:Ise,Content:Lse}=NW,{TextArea:Rse}=wW,zse=`https://ceshi.apiforeign.minzhongzc.com`,Bse=e=>{if(!e)return!1;let t=e.supportsUniversalReference??e.supports_universal_reference,n=e.maxImageCount??e.max_image_count;return t!==!1&&(n==null||Number(n)>=1)},r9=e=>e?/^https?:\/\//i.test(e)||e.startsWith(`blob:`)?e:`${zse}${e}`:``,Vse=()=>{let e=Je(),{user:t,optimizeHoldCredits:n}=l7(),[r,i]=(0,S.useState)([]),[a,o]=(0,S.useState)(1),[s,c]=(0,S.useState)(20),[l,u]=(0,S.useState)(0),[d,f]=(0,S.useState)(``),[p,m]=(0,S.useState)([]),[h,g]=(0,S.useState)(1),[_,v]=(0,S.useState)(20),[y,b]=(0,S.useState)(0),[x,C]=(0,S.useState)(``),[w,T]=(0,S.useState)(``),[E,D]=(0,S.useState)(``),[O,k]=(0,S.useState)(null),[A,j]=(0,S.useState)(``),[M,N]=(0,S.useState)(``),[P,F]=(0,S.useState)(null),[I,L]=(0,S.useState)(null),[R,z]=(0,S.useState)(``),[B,V]=(0,S.useState)(``),[H,U]=(0,S.useState)(!1),[W,G]=(0,S.useState)(!1),[K,ee]=(0,S.useState)([]),[q,te]=(0,S.useState)(``),[ne,re]=(0,S.useState)(5),[ie,J]=(0,S.useState)(`9:16`),[ae,oe]=(0,S.useState)(`480p`),[se,ce]=(0,S.useState)(!1),[le,ue]=(0,S.useState)(!1),[de,fe]=(0,S.useState)({ratios:[`16:9`,`4:3`,`1:1`,`3:4`,`9:16`,`21:9`],resolutions:[`480p`,`720p`,`1080p`],durations:[5,8,10,12,15]}),[pe,me]=(0,S.useState)([]),[he,ge]=(0,S.useState)(!1),_e=(0,S.useRef)(null),ve=(0,S.useRef)(null),ye=(0,S.useRef)(null);(0,S.useEffect)(()=>{P5().then(e=>{let t=e?.engine?.video||[];if(ee(t),t.length>0){let e=t[0];te(e.id),J(e.supportedRatios?.includes(`9:16`)?`9:16`:e.supportedRatios?.[0]||`9:16`),oe(e.supportedResolutions?.[0]||`480p`),re(e.supportedDurations?.[0]||5)}}).catch(()=>Q.error(`视频引擎加载失败`)),L5().then(e=>me(Array.isArray(e)?e:[])).catch(()=>me([]))},[]),(0,S.useEffect)(()=>{let e=e=>{let t=e.target;!t.closest(`.image-settings-popover`)&&!t.closest(`.image-settings-trigger`)&&(ce(!1),ue(!1))};return document.addEventListener(`click`,e),()=>document.removeEventListener(`click`,e)},[]);let be=K.find(e=>e.id===q),xe=!R||Bse(be),Se=(()=>{let e=pe.find(e=>e.modelConfigId===q&&e.genType===`video`&&e.resolution===ae);if(!e)return 0;let t=(Number(e.baseCredits||0)+Number(e.perSecondCredits||0)*ne)*Number(e.ratio||1);return R&&(t+=(Number(e.inputImageBaseCredits||0)+Number(e.inputImagePerImageCredits||0))*Number(e.inputImageRatio||1)),Number(t.toFixed(2))})(),Ce=(e,t,n=!1)=>{R5(e,t).then(e=>{if(e.items){m(n?t=>t.map(t=>{let n=e.items.find(e=>e.id===t.id);return n&&n.status!==t.status?n:t}):e.items);let t=e.items.some(e=>e.status===`processing`);t&&!_e.current?_e.current=setInterval(()=>{Ce(h,_,!0)},5e3):!t&&_e.current&&(clearInterval(_e.current),_e.current=null)}e.total!==void 0&&b(e.total)}).catch(e=>{})},we=e=>{g(e),Ce(e,_)},Te=(e,t,n=!1,r)=>{R5(e,t,r).then(e=>{if(e.items){i(n?t=>t.map(t=>{let n=e.items.find(e=>e.id===t.id);return n&&n.status!==t.status?n:t}):e.items);let t=e.items.some(e=>e.status===`processing`);t&&!ve.current?ve.current=setInterval(()=>{Te(a,s,!0,d)},5e3):!t&&ve.current&&(clearInterval(ve.current),ve.current=null)}e.total!==void 0&&u(e.total)}).catch(e=>{})};(0,S.useEffect)(()=>(Te(a,s),Ce(h,_),()=>{_e.current&&=(clearInterval(_e.current),null),ve.current&&=(clearInterval(ve.current),null)}),[]);let Ee=(e,t)=>{o(e),c(t),Te(e,t,!1,d)},De=()=>{o(1),Te(1,s,!1,d)},Oe=async e=>{if(!e.type.startsWith(`video/`))return Q.error(`只能上传视频文件`),!1;if(!(e.size/1024/1024<50))return Q.error(`视频大小不能超过50MB`),!1;let t=document.createElement(`video`);return t.preload=`metadata`,new Promise(n=>{t.onloadedmetadata=async()=>{if(t.duration<2){Q.error(`视频时长不能少于2秒`),URL.revokeObjectURL(t.src),n(!1);return}if(t.duration>=16){Q.error(`视频时长不能超过15秒`),URL.revokeObjectURL(t.src),n(!1);return}U(!0);try{let r=await Gie(e,t.duration);k(e),j(r.url),N(r.resource_id||``),F(t.duration);let i=Math.round(t.duration);re(de.durations.reduce((e,t)=>Math.abs(t-i){Q.error(`视频文件无效`),URL.revokeObjectURL(t.src),n(!1)},t.src=URL.createObjectURL(e)})},ke=async e=>{if(!e.type.startsWith(`image/`))return Q.error(`只能上传图片文件`),!1;if(!(e.size/1024/1024<10))return Q.error(`图片大小不能超过10MB`),!1;let t=new Image;return new Promise(n=>{t.onload=async()=>{let r=t.width/t.height;Math.abs(r-.75)<.1||Math.abs(r-.5625),G(!0);try{let t=await Wie(e);L(e),z(t.url),V(t.resource_id||``),Q.success(`图片上传成功`),n(!1)}catch(e){let t=``;if(e instanceof Error)try{t=JSON.parse(e.message).detail||e.message}catch{t=e.message}Q.error(t||`图片上传失败`),n(!1)}finally{G(!1),URL.revokeObjectURL(t.src)}},t.onerror=()=>{Q.error(`图片文件无效`),URL.revokeObjectURL(t.src),n(!1)},t.src=URL.createObjectURL(e)})},Ae=()=>{A&&URL.revokeObjectURL(A),k(null),j(``)},je=()=>{R&&URL.revokeObjectURL(R),L(null),z(``)},Me=()=>{if(!A){Q.warning(`请上传复刻视频`);return}if(!q||!ne||!ie||!ae){Q.warning(`请选择完整的视频生成参数`);return}if(!xe){Q.warning(`当前视频引擎不支持参考图片,请移除素材图片或切换引擎`);return}let t=ye.current||`hot_v2_${Date.now()}_${Math.random().toString(16).slice(2)}`;ye.current=t,sae({material_video_url:A,material_image_url:R||void 0,material_video_resource_id:M||void 0,material_image_resource_id:B||void 0,material_video_duration_seconds:P||void 0,source_project_name:x.trim()||void 0,target_project_name:w.trim()||void 0,project_description:E.trim()||void 0,core_content_point:E.trim()||void 0,video_config:{engine_id:q,duration:ne,aspect_ratio:ie,resolution:ae},idempotency_key:t}).then(t=>{let n=t.id||t.projectId||t.detail?.id;ye.current=null,j(``),N(``),F(null),z(``),V(``),L(null),C(``),T(``),D(``),Ce(1,20),Q.success(`项目已创建,视频提词正在生成`),n&&e(`/initial/${n}/initialinfo?flow_version=v2`)}).catch(e=>{Q.error(e?.message||`视频开头复刻失败`)})};return(0,$.jsxs)(`div`,{className:`replication-container`,style:{margin:`-24px -32px -32px`,height:`calc(100vh - 34px)`,display:`flex`,justifyContent:`space-between`,alignItems:`stretch`,gap:`2%`,position:`relative`,boxSizing:`border-box`},children:[(0,$.jsxs)(`div`,{className:`replication-preview`,style:{width:`68%`,background:`#f1f2f3`,backdropFilter:`blur(20px)`,display:`flex`,flexDirection:`column`,borderRadius:20,overflow:`hidden`,position:`relative`,zIndex:10},children:[(0,$.jsxs)(`div`,{className:`animate-fadeInUp`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,padding:`16px 24px`,paddingBottom:0,background:`linear-gradient(135deg, rgba(99, 102, 241, 0.06) 0%, rgba(139, 92, 246, 0.04) 100%)`,backdropFilter:`blur(10px)`,border:`1px solid rgba(99, 102, 241, 0.08)`,position:`relative`,overflow:`hidden`,flexWrap:`wrap`,gap:12},children:[(0,$.jsx)(`div`,{style:{display:`flex`,alignItems:`center`,gap:16,paddingBottom:12},children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h2`,{style:{margin:0,fontSize:18,fontWeight:700,background:`linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)`,WebkitBackgroundClip:`text`,WebkitTextFillColor:`transparent`,backgroundClip:`text`},children:`爆款复刻`}),(0,$.jsx)(`p`,{style:{fontSize:13,color:`#64748b`,margin:`4px 0 0 0`},children:`上传参考视频与产品图片,一键复刻爆款视频开头`})]})}),(0,$.jsx)(Z,{type:`primary`,ghost:!0,style:{borderRadius:10,padding:`6px 16px`,fontSize:13,background:`rgba(99, 102, 241, 0.1)`,borderColor:`rgba(99, 102, 241, 0.2)`,color:`#6366f1`},onClick:()=>ge(!0),children:`创作记录`})]}),(0,$.jsx)(`div`,{style:{flex:1,background:`transparent`,borderRight:`1px solid rgba(99, 102, 241, 0.08)`,overflowY:`auto`,scrollbarWidth:`none`},children:p.length>0?(0,$.jsxs)(`div`,{style:{height:`100%`,padding:`24px`},children:[(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:24},children:(0,$.jsx)(`h2`,{style:{margin:0,fontSize:16,fontWeight:600,color:`#1e293b`},children:`历史生成作品`})}),(0,$.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fill, minmax(190px, 1fr))`,gap:16},children:p.map(t=>(0,$.jsxs)(`div`,{style:{border:`1px solid rgba(99, 102, 241, 0.6)`,backdropFilter:`blur(10px)`,borderRadius:16,overflow:`hidden`,boxShadow:`0 4px 16px rgba(99, 102, 241, 0.06)`,cursor:`pointer`,transition:`transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1)`},onClick:()=>e(`/initial/${t.id}/initialinfo?flow_version=${t.flowVersion===`v2`?`v2`:`v1`}`),onMouseEnter:e=>{e.currentTarget.style.transform=`translateY(-6px)`,e.currentTarget.style.boxShadow=`0 12px 32px rgba(99, 102, 241, 0.12)`},onMouseLeave:e=>{e.currentTarget.style.transform=`translateY(0)`,e.currentTarget.style.boxShadow=`0 4px 16px rgba(99, 102, 241, 0.06)`},children:[(0,$.jsxs)(`div`,{style:{position:`relative`,aspectRatio:`1/1`},children:[t.finalVideoUrl?(0,$.jsx)(`img`,{src:`https://ceshi.apiforeign.minzhongzc.com/static${t.finalVideoCoverUrl}&w=300&q=50`,alt:t.targetProjectName,style:{width:`100%`,height:`100%`,objectFit:`cover`}}):(0,$.jsx)(`div`,{style:{width:`100%`,height:`100%`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,$.jsx)(`div`,{style:{width:60,height:60,borderRadius:`50%`,background:`linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)`,display:`flex`,alignItems:`center`,justifyContent:`center`},children:(0,$.jsx)(X8,{style:{fontSize:24,color:`#fff`}})})}),(0,$.jsx)(`div`,{style:{position:`absolute`,bottom:8,right:8,padding:`4px 12px`,background:`rgba(0,0,0,0.7)`,borderRadius:16,fontSize:10,color:`#fff`,backdropFilter:`blur(4px)`},children:(()=>{let e=t.status,n=t.current_step_code||t.currentStepCode;if(n===`image_prompt_optimize`)switch(e){case`waiting_user`:return`等待融合图生成`;case`processing`:return`图片提示词生成中`;case`completed`:return`图片提示词生成成功`;case`failed`:return`图片提示词生成失败`;default:return e||`待处理`}else if(n===`image_generate`)switch(e){case`waiting_user`:return`等待生成视频提示词`;case`processing`:return`融合图生成中`;case`completed`:return`融合图生成成功`;case`failed`:return`融合图生成失败`;default:return e||`待处理`}else if(n===`video_prompt_optimize`)switch(e){case`waiting_user`:return`等待最终视频生成`;case`processing`:return`视频提示词生成中`;case`completed`:return`视频提示词生成成功`;case`failed`:return`视频提示词生成失败`;default:return e||`待处理`}else if(n===`video_generate`)switch(e){case`waiting_user`:return``;case`processing`:return`最终视频生成中`;case`completed`:return`最终视频生成成功`;case`failed`:return`最终视频生成失败`;default:return e||`待处理`}else if(n===`material_input`)switch(e){case`waiting_user`:return`等待生成图片提示词`;case`processing`:return`素材处理中`;case`completed`:return`素材上传成功`;case`failed`:return`素材上传失败`;default:return e||`待处理`}else return{pending:`子任务待处理`,waiting_user:`等待用户确认或触发`,processing:`子任务处理中`,completed:`子任务完成`,failed:`子任务失败`,cancelled:`子任务取消`}[e]||e||`待处理`})()})]}),(0,$.jsxs)(`div`,{style:{padding:14},children:[(0,$.jsx)(`h4`,{style:{margin:0,fontSize:14,fontWeight:600,color:`#1e293b`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:t.targetProjectName||`未命名作品`}),(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginTop:6},children:[(0,$.jsx)(`p`,{style:{margin:0,fontSize:12,color:`#64748b`},children:t.createdAt?new Date(t.createdAt).toLocaleDateString(`zh-CN`):``}),(()=>{let e=t.status;return e===`waiting_user`?(0,$.jsx)(`span`,{style:{fontSize:11,color:`#f59e0b`},children:`等待下一步`}):e===`processing`?(0,$.jsxs)(`span`,{style:{fontSize:11,color:`#6366f1`,display:`flex`,alignItems:`center`},children:[(0,$.jsx)(`span`,{children:`进行中`}),(0,$.jsx)(`span`,{style:{animation:`dots 1s infinite`},children:`...`}),(0,$.jsx)(`style`,{children:` @keyframes dots { 0%, 20% { opacity: 0; } 50% { opacity: 1; } diff --git a/video-gen-app/dist/index.html b/video-gen-app/dist/index.html index 6f195651..c75e3f0d 100644 --- a/video-gen-app/dist/index.html +++ b/video-gen-app/dist/index.html @@ -8,7 +8,7 @@ 民众智创 - + diff --git a/video-gen-app/src/pages/InitialReplication.tsx b/video-gen-app/src/pages/InitialReplication.tsx index bc561a4b..34c3fda3 100644 --- a/video-gen-app/src/pages/InitialReplication.tsx +++ b/video-gen-app/src/pages/InitialReplication.tsx @@ -609,7 +609,7 @@ const GenerateConver: React.FC = () => { {item.targetProjectName}