8 lines
12 KiB
Java
8 lines
12 KiB
Java
var le=Object.defineProperty,ae=Object.defineProperties;var ne=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable;var H=(a,o,r)=>o in a?le(a,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[o]=r,G=(a,o)=>{for(var r in o||(o={}))ie.call(o,r)&&H(a,r,o[r]);if(N)for(var r of N(o))re.call(o,r)&&H(a,r,o[r]);return a},j=(a,o)=>ae(a,ne(o));var I=(a,o,r)=>new Promise((A,P)=>{var L=c=>{try{h(r.next(c))}catch(y){P(y)}},u=c=>{try{h(r.throw(c))}catch(y){P(y)}},h=c=>c.done?A(c.value):Promise.resolve(c.value).then(L,u);h((r=r.apply(a,o)).next())});import{e as ce,o as ue,r as _,d as de,C as p,z as m,Q as t,f as d,u as g,F as Q,D as Y,A as V,K as ve,H as B,G as S,c as pe,R as me,E}from"./vue-vendor-DNhG1Cve.js";import{B as fe}from"./BasicForm-ClUSoD_-.js";import"./helper-DcLcf4v6.js";import{u as _e}from"./useForm-D61zovon.js";import{d as D,u as ge,v as F,s as ye,bR as xe,aH as he,x as w,au as ke}from"./index-X7Y8jykP.js";import"./index-BzChaRPg.js";import"./useAppInject-DPZGPcR3.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./BasicForm.vue_vue_type_style_index_0_lang-B29PWQy0.js";import"./index-DO7ZhK45.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./useTimeout-D5AmIBZw.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./index-saD4h7VJ.js";import"./useBreakpoint-DXhPW7nV.js";import"./useEventListener-BRXjwk7A.js";import"./breakpointEnum-BhAg6bcX.js";import"./uniqBy--vsL0WVB.js";import"./index-BDvqZ5j4.js";import"./BasicModal-xH56XuRZ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./index-CuWaQdlK.js";const be=[{label:"视频尺寸",field:"size",component:"Select",defaultValue:"1920x1080",componentProps:{options:[{label:"1280x720 (720P)",value:"1280x720"},{label:"720x1280",value:"720x1280"},{label:"1024x1024",value:"1024x1024"},{label:"1920x1080 (1080P)",value:"1920x1080"},{label:"1080x1920",value:"1080x1920"},{label:"2048x1080 (2K)",value:"2048x1080"},{label:"3840x2160 (4K)",value:"3840x2160"}],placeholder:"请选择视频尺寸"}},{label:"视频帧率",field:"fps",component:"Select",defaultValue:30,componentProps:{options:[{label:"30 FPS",value:30},{label:"60 FPS",value:60}],placeholder:"请选择视频帧率"}},{label:"视频时长",field:"duration",component:"Select",defaultValue:5,componentProps:{options:[{label:"5秒",value:5},{label:"10秒",value:10}],placeholder:"请选择视频时长"}},{label:"是否ai合成音效",field:"izAiAudio",component:"Select",defaultValue:0,componentProps:{options:[{label:"否",value:0},{label:"是",value:1}]}}],Ie=a=>D.post({url:"/airag/video/submit",params:a},{isTransformResponse:!1}),q=a=>D.get({url:`/airag/video/query/${a}`},{isTransformResponse:!1}),Se=a=>D.get({url:"/airag/video/listByUser",params:a},{isTransformResponse:!1}),we=a=>D.delete({url:"/airag/video/deleteVideoRecord",params:a},{isTransformResponse:!1,joinParamsToUrl:!0}),Te={class:"ai-video-page"},Ce={class:"content-wrapper"},Ue={class:"control-panel"},Ve={class:"form-container"},Fe={class:"form-item-group"},Ae={class:"preset-group"},Pe={class:"preset-items"},$e=["onClick"],ze={class:"action-btn-group"},Re={class:"preview-panel"},Be={class:"preview-content"},Ee={key:0,class:"empty-state"},De={key:1,class:"loading-state"},Le={class:"loading-text"},Ke={class:"elapsed-time"},Me={class:"status-text"},Ne={key:2,class:"video-player-wrapper"},He=["src"],Ge={key:0,class:"video-info-section"},je={class:"current-video-info"},Qe={class:"info-text"},Ye={class:"history-panel"},qe={class:"history-list-wrapper"},Je={key:0,class:"empty-history"},Oe={key:1,class:"history-list"},We={class:"item-header"},Xe=["title"],Ze={class:"item-time"},et={class:"item-actions"},T="ai_video_task_id",tt=ce({__name:"AiVideo",setup(a){const{createMessage:o}=ye(),r=ge(),A=be.filter(s=>!["text"].includes(s.field)),[P,{validate:L}]=_e({schemas:A,showActionButtonGroup:!1,wrapperCol:{span:24},labelCol:{span:24}}),u=_(!1),h=_(null),c=_(""),y=_(""),x=_(""),K=_([]),M=_(!1),k=_(0),$=_("任务已提交,排队中...");let C=null,U=null;const J=pe(()=>{const s=Math.floor(k.value/60),e=k.value%60;return s>0?`${s}分${e}秒`:`${e}秒`}),O=[{title:"沙滩金毛犬",content:"一只金毛犬在金色的沙滩上奔跑,海浪轻轻拍打着岸边,阳光明媚,慢动作镜头"},{title:"航拍山脉全景",content:"航拍壮丽的山脉全景,云雾缭绕在山峰之间,镜头缓缓推进。"},{title:"咖啡微距特写",content:"一杯咖啡被缓缓倒入透明玻璃杯中,咖啡与牛奶融合形成美丽的纹理,微距特写。"},{title:"极光延时摄影",content:"星空下的极光在天空中舞动,色彩绚烂,延时摄影效果。"},{title:"女讲师教学",content:"女讲师,站在 PPT 前手持教鞭指向内容,表情认真亲和,讲解自然流畅,手势得体大方,光线明亮清晰,背景干净整洁,1080P 高清,画面稳定流畅,适合知识讲解、课程教学,风格专业、清晰、有说服力"},{title:"口红带货主播",content:`画面主体: 一位美丽的年轻中国女主播,特写镜头,面对镜头微笑。
|
||
外貌着装: 她穿着浅色职业装,妆容精致无瑕。
|
||
核心动作: 她一只手握着一支高端口红,另一只手优雅地打开盖子,露出丝滑的膏体。她温柔地将口红涂抹在自己的嘴唇上,动作轻柔,目光专注且含笑。
|
||
背景环境: 身后是明亮整洁的直播工作室,有环形灯补光,背景呈柔和的虚化效果。
|
||
画面质感: 高色彩饱和度,电影级布光,4k分辨率,60fps。
|
||
特殊效果: 使用慢镜头捕捉口红涂抹瞬间的丝滑质感。
|
||
语言风格:中文,适合电商直播带货场景,风格专业、清晰、有说服力`}];function z(){return I(this,null,function*(){var s,e;try{const l=(s=r.getUserInfo)==null?void 0:s.id;if(!l)return;const n=yield Se({userId:l});if(n&&n.result){const v=Array.isArray(n.result)?n.result:((e=n.result)==null?void 0:e.records)||[];K.value=v.map(i=>j(G({},i),{videoFullUrl:i.videoUrl?F(i.videoUrl):""}))}}catch(l){}})}z();function W(s){M.value||(M.value=!0,x.value=s,setTimeout(()=>{M.value=!1},300))}function f(){C&&(clearInterval(C),C=null),U&&(clearInterval(U),U=null)}function X(){return I(this,null,function*(){var s;try{const e=yield L();if(!x.value.trim()){o.warn("请输入文案内容");return}u.value=!0,c.value="",k.value=0,$.value="任务已提交,排队中...",e.prompt=x.value.trim(),U=setInterval(()=>{k.value++},1e3);const l=yield Ie(e);if(!l||!l.success||!((s=l.result)!=null&&s.taskId)){o.error((l==null?void 0:l.message)||"提交任务失败"),u.value=!1,f();return}const n=l.result.taskId;localStorage.setItem(T,n),$.value="视频生成中...",C=setInterval(()=>I(null,null,function*(){try{const v=yield q(n);if(v!=null&&v.success&&v.result){const{status:i,videoUrl:R,message:b}=v.result;i==="SUCCESS"?(f(),u.value=!1,localStorage.removeItem(T),c.value=F(R)||"",y.value=x.value,o.success("视频生成成功!"),yield z()):i==="FAIL"&&(f(),u.value=!1,localStorage.removeItem(T),o.error(b||"视频生成失败"))}}catch(v){f(),u.value=!1,o.error("查询任务状态失败: "+(v.message||"未知错误"))}}),5e3)}catch(e){if(f(),u.value=!1,e!=null&&e.errorFields)return;o.error(e.message||"提交任务失败")}})}function Z(s){c.value=s.videoFullUrl||F(s.videoUrl)||"",y.value=s.content,setTimeout(()=>{var e,l;(l=(e=h.value)==null?void 0:e.play)==null||l.call(e)},0)}function ee(s){x.value=s.content,o.success("已将文案填入输入框")}function te(s){const e=s.videoFullUrl||F(s.videoUrl);if(!e){o.error("下载地址不存在");return}const l=document.createElement("a");l.href=e,l.download=s.fileName||`video-${Date.now()}.mp4`,l.target="_blank",document.body.appendChild(l),l.click(),document.body.removeChild(l)}function se(s){return I(this,null,function*(){var l;const e=(l=r.getUserInfo)==null?void 0:l.id;if(e)try{const n=yield we({userId:e,recordId:s});n.success?(o.success("已删除"),yield z()):o.error(n.message||"删除失败")}catch(n){o.error("删除失败")}})}function oe(s){return(s==null?void 0:s.createTime)||""}return ue(()=>{const s=localStorage.getItem(T);s&&(u.value=!0,c.value="",k.value=0,$.value="任务恢复中,继续等待...",U=setInterval(()=>{k.value++},1e3),C=setInterval(()=>I(null,null,function*(){try{const e=yield q(s);if(e!=null&&e.success&&e.result){const{status:l,videoUrl:n,message:v}=e.result;l==="SUCCESS"?(f(),u.value=!1,localStorage.removeItem(T),c.value=F(n)||"",o.success("视频生成成功!"),yield z()):l==="FAIL"&&(f(),u.value=!1,localStorage.removeItem(T),o.error(v||"视频生成失败"))}}catch(e){f(),u.value=!1,o.error("查询任务状态失败: "+(e.message||"未知错误"))}}),5e3))}),de(()=>{f()}),(s,e)=>{const l=xe,n=ve("a-button"),v=he;return m(),p("div",Te,[e[15]||(e[15]=t("div",{class:"page-header"},[t("div",{class:"title"},"AI视频"),t("div",{class:"subtitle"},"将文本快速转换为生动的视频内容")],-1)),t("div",Ce,[t("div",Ue,[e[4]||(e[4]=t("div",{class:"panel-title"},"视频配置",-1)),t("div",Ve,[d(g(fe),{onRegister:g(P),schemas:g(A)},null,8,["onRegister","schemas"]),t("div",Fe,[e[1]||(e[1]=t("label",{class:"form-label"},"文案",-1)),d(l,{value:x.value,"onUpdate:value":e[0]||(e[0]=i=>x.value=i),rows:4,maxlength:500,"show-count":"",placeholder:"请输入要生成视频的文案内容"},null,8,["value"])]),t("div",Ae,[e[2]||(e[2]=t("div",{class:"preset-label"},"常用场景",-1)),t("div",Pe,[(m(),p(Q,null,Y(O,(i,R)=>t("div",{key:R,class:"preset-item",onClick:me(b=>W(i.content),["prevent"])},S(i.title),9,$e)),64))])])]),t("div",ze,[d(n,{type:"primary",size:"large",block:"",loading:u.value,onClick:X},{default:V(()=>[d(g(w),{icon:"ant-design:video-camera-outlined"}),e[3]||(e[3]=E(" 开始生成 ",-1))]),_:1},8,["loading"])])]),t("div",Re,[e[9]||(e[9]=t("div",{class:"panel-title"},"预览区域",-1)),t("div",Be,[!c.value&&!u.value?(m(),p("div",Ee,[d(g(w),{icon:"ant-design:video-camera-outlined",size:"72",color:"#c0c4cc"}),e[5]||(e[5]=t("p",null,"填写左侧文案并点击「开始生成」",-1)),e[6]||(e[6]=t("p",{class:"tip"},"支持调整视频长度、风格和效果,生成更加个性化的视频内容",-1))])):B("",!0),u.value?(m(),p("div",De,[d(v,{size:"large"}),t("div",Le,[e[7]||(e[7]=t("p",null,"正在生成视频,请耐心等待...",-1)),t("p",Ke,"已等待 "+S(J.value),1),t("p",Me,S($.value),1)])])):B("",!0),c.value&&!u.value?(m(),p("div",Ne,[t("video",{ref_key:"videoRef",ref:h,src:c.value,controls:"",class:"video-control"},null,8,He)])):B("",!0)]),c.value?(m(),p("div",Ge,[t("div",je,[e[8]||(e[8]=t("span",{class:"info-label"},"当前视频:",-1)),t("span",Qe,S(y.value),1)])])):B("",!0)]),t("div",Ye,[e[14]||(e[14]=t("div",{class:"panel-title"},"生成历史",-1)),t("div",qe,[K.value.length===0?(m(),p("div",Je,[...e[10]||(e[10]=[t("p",null,"暂无生成历史",-1)])])):(m(),p("div",Oe,[(m(!0),p(Q,null,Y(K.value,(i,R)=>(m(),p("div",{key:i.id,class:"history-item"},[t("div",We,[t("span",{class:"item-title",title:i.content},S(i.content),9,Xe),t("span",Ze,S(oe(i)),1)]),t("div",et,[d(n,{type:"text",size:"small",onClick:b=>Z(i)},{default:V(()=>[d(g(w),{icon:"ant-design:play-circle-outlined"}),e[11]||(e[11]=E(" 播放 ",-1))]),_:1},8,["onClick"]),d(n,{type:"text",size:"small",onClick:b=>ee(i)},{default:V(()=>[d(g(w),{icon:"ant-design:copy-outlined"}),e[12]||(e[12]=E(" 复用文案 ",-1))]),_:1},8,["onClick"]),d(n,{type:"text",size:"small",onClick:b=>te(i)},{default:V(()=>[d(g(w),{icon:"ant-design:download-outlined"}),e[13]||(e[13]=E(" 下载 ",-1))]),_:1},8,["onClick"]),d(n,{type:"text",size:"small",danger:"",onClick:b=>se(i.id)},{default:V(()=>[d(g(w),{icon:"ant-design:delete-outlined"})]),_:1},8,["onClick"])])]))),128))]))])])])])}}}),At=ke(tt,[["__scopeId","data-v-37f55e46"]]);export{At as default};
|