From 768279354cb8dc35adda00083f43d69380133c51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=91=A8=E6=88=90=E6=B3=A2?= <zhouchengbo@wmdigit.com>
Date: Mon, 14 Oct 2024 12:00:16 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/api/service/text2videoService.ts     | 72 ++++++++++++++++++++----
 src/views/home/gen_digit_human_video.vue | 49 ++++++++--------
 2 files changed, 85 insertions(+), 36 deletions(-)

diff --git a/src/api/service/text2videoService.ts b/src/api/service/text2videoService.ts
index fc8c489..78bd33d 100644
--- a/src/api/service/text2videoService.ts
+++ b/src/api/service/text2videoService.ts
@@ -22,7 +22,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与LLM通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与LLM通讯失败`);
+        }
       });
   },
 
@@ -69,7 +73,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与 stable-diffusion-webui Api 通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与 stable-diffusion-webui Api 通讯失败`);
+        }
       });
   },
 
@@ -90,7 +98,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`gen_video接口通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`gen_video接口通讯失败`);
+        }
       });
   },
 
@@ -111,7 +123,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与pwd_check接口通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与pwd_check接口通讯失败`);
+        }
       });
   },
 
@@ -132,7 +148,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与翻译接口通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与翻译接口通讯失败`);
+        }
       });
   },
 
@@ -150,7 +170,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`add_text_to_img接口通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`add_text_to_img接口通讯失败`);
+        }
       });
   },
 
@@ -168,7 +192,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与Test Api通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与Test Api通讯失败`);
+        }
       });
   },
 
@@ -186,7 +214,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与Img2Text Api通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与Img2Text Api通讯失败`);
+        }
       });
   },
 
@@ -204,7 +236,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与ImgTextMatch Api通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与ImgTextMatch Api通讯失败`);
+        }
       });
   },
 
@@ -222,7 +258,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与 cutout_from_img Api 通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与 cutout_from_img Api 通讯失败`);
+        }
       });
   },
 
@@ -275,7 +315,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与 img2img_inpaint Api 通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与 img2img_inpaint Api 通讯失败`);
+        }
       });
   },
 
@@ -301,7 +345,11 @@ export default {
       })
       .catch((err: any) => {
         console.log(`err = ${JSON.stringify(err)}`);
-        return Promise.reject(`与后端 gen_video_digithuman 接口通讯失败`);
+        try {
+          return Promise.reject(err.message);
+        } catch (e) {
+          return Promise.reject(`与后端 gen_video_digithuman 接口通讯失败`);
+        }
       });
   },
 }
diff --git a/src/views/home/gen_digit_human_video.vue b/src/views/home/gen_digit_human_video.vue
index 65c7189..95fa8b0 100644
--- a/src/views/home/gen_digit_human_video.vue
+++ b/src/views/home/gen_digit_human_video.vue
@@ -51,9 +51,9 @@ const handleUploadError = (error: Error) => {
   });
 }
 const handleBeforeUpload = async (file: any) => {
-  const isLt1M = file.size / 1024 / 1024 <= 10;
+  const isLt1M = file.size / 1024 / 1024 <= 50;
   if (!isLt1M) {
-    ElMessage.error('文件大小不能超过 10MB')
+    ElMessage.error('文件大小不能超过 50MB')
     return false
   }
 }
@@ -167,11 +167,10 @@ const handleUploadShowImageOrVideoRemove: UploadProps['onRemove'] = (file, uploa
 // 生成视频
 const onGenVideo = async () => {
   if (!form.text || form.text.length == 0
-    || !form.sample_audio_path || form.sample_audio_path.length == 0
     || !form.sample_video_path || form.sample_video_path.length == 0
   ) {
     ElMessage({
-      message: "文案、采样声音、出镜人物 均不能为空",
+      message: "文案、出镜人物 均不能为空",
       type: "error",
     });
     return;
@@ -218,52 +217,54 @@ const onGenVideo = async () => {
           placeholder="Please input"
         />
       </el-form-item>
-      <!-- 采样声音 -->
-      <el-form-item label="采样声音">
+      <!-- 出镜人物 -->
+      <el-form-item label="出镜人物">
         <el-upload
-          ref="upload_sample_audio"
+          ref="upload_sample_video"
           :show-file-list="true"
           :limit="1"
-          accept=".wav,.WAV"
+          accept=".mp4,.MP4"
           :action="actionUrl"
-          :on-success="UploadSampleAudioSuccess"
-          :on-exceed="handleUploadSampleAudioExceed"
+          :on-success="UploadSampleVideoSuccess"
+          :on-exceed="handleUploadSampleVideoExceed"
           :on-error="handleUploadError"
           :before-upload="handleBeforeUpload"
-          :on-remove="handleUploadSampleAudioRemove"
+          :on-remove="handleUploadSampleVideoRemove"
         >
           <el-button type="primary" size="small">上传</el-button>
           <template #tip>
             <div class="el-upload__tip" style="color: #0000ff; background-color: #e6f7ff">
-              上传一段说话的声音,比如正常读一段文字,20秒左右即可。文件格式为 wav,不大于
-              10M。
+              请录制一段出镜人的视频,说话时的嘴型能够清晰分辨,20秒左右即可。上传的文件格式为
+              mp4,不大于 50M。
             </div>
           </template>
         </el-upload>
       </el-form-item>
-      <!-- 出镜人物 -->
-      <el-form-item label="出镜人物">
+
+      <!-- 采样声音 -->
+      <el-form-item label="采样声音">
         <el-upload
-          ref="upload_sample_video"
+          ref="upload_sample_audio"
           :show-file-list="true"
           :limit="1"
-          accept=".mp4,.MP4"
+          accept=".wav,.WAV"
           :action="actionUrl"
-          :on-success="UploadSampleVideoSuccess"
-          :on-exceed="handleUploadSampleVideoExceed"
+          :on-success="UploadSampleAudioSuccess"
+          :on-exceed="handleUploadSampleAudioExceed"
           :on-error="handleUploadError"
           :before-upload="handleBeforeUpload"
-          :on-remove="handleUploadSampleVideoRemove"
+          :on-remove="handleUploadSampleAudioRemove"
         >
           <el-button type="primary" size="small">上传</el-button>
           <template #tip>
             <div class="el-upload__tip" style="color: #0000ff; background-color: #e6f7ff">
-              上传一段出镜人物的视频,5-10秒即可,正面,说话嘴型能够清晰分辨。文件格式为
-              mp4,不大于 10M。
+              这里可以上传一段说话的声音,比如朗读一段文字,20秒左右即可。文件格式为
+              wav,不大于 50M。也可以不上传,不传则默认用出镜人的声音。
             </div>
           </template>
         </el-upload>
       </el-form-item>
+
       <!-- 拼接视频或图片 -->
       <el-form-item label="拼接视频或图片">
         <el-upload
@@ -281,7 +282,7 @@ const onGenVideo = async () => {
           <el-button type="primary" size="small">上传</el-button>
           <template #tip>
             <div class="el-upload__tip" style="color: #0000ff; background-color: #e6f7ff">
-              可以上传视频(mp4)或图片(jpg, png),
+              这里可以上传一段视频(mp4)或一张图片(jpg, png),
               作为最终视频的上半部分,也可以不上传,不传则只生成数字人视频。
             </div>
           </template>
@@ -293,7 +294,7 @@ const onGenVideo = async () => {
         <el-button type="primary" @click="onGenVideo">生成视频</el-button>
       </el-form-item>
       <el-form-item>
-        <video :src="form.final_video" controls></video>
+        <video :src="form.final_video" controls width="360" height="640"></video>
       </el-form-item>
     </el-form>
   </main>
-- 
2.18.1