lh 1 miesiąc temu
rodzic
commit
73cfd82431
1 zmienionych plików z 54 dodań i 22 usunięć
  1. 54 22
      app/Services/Anime/AnimeService.php

+ 54 - 22
app/Services/Anime/AnimeService.php

@@ -4390,13 +4390,44 @@ class AnimeService
             Utils::throwError('20003:该剧集已有正在处理的视频合成任务');
         }
 
-        // 获取所有分镜的配音视频,按 segment_number 排序
-        $segments = DB::table('mp_episode_segments')
-            ->where('anime_id', $animeId)
-            ->where('episode_id', $episodeId)
-            ->orderBy('segment_number')
-            ->select('segment_id', 'segment_number', 'video_url', 'audio_url', 'video_time_point_start', 'video_time_point_end')
-            ->get();
+        // 获取全能模式状态
+        $ace_mode = DB::table('mp_animes')->where('id', $animeId)->value('ace_mode');
+
+        if ((int)$ace_mode === 1) {
+            // 获取所有片段的配音视频,按 act_number 排序
+            $segments = DB::table('mp_episode_segments')
+                ->where('anime_id', $animeId)
+                ->where('episode_id', $episodeId)
+                ->orderBy('segment_number')
+                ->select('id as act_id', 'act_number', 'video_url', 'audio_url', 'video_time_point_start', 'video_time_point_end')
+                ->get();
+            
+            // 检查是否所有片段都有视频
+            $missingVideos = $segments->filter(function($segment) {
+                return empty($segment->video_url);
+            });
+
+            if ($missingVideos->isNotEmpty()) {
+                Utils::throwError('20003:存在未完成视频的片段,请确保所有片段都已完成配音');
+            }
+        }else {
+            // 获取所有分镜的配音视频,按 segment_number 排序
+            $segments = DB::table('mp_episode_segments')
+                ->where('anime_id', $animeId)
+                ->where('episode_id', $episodeId)
+                ->orderBy('segment_number')
+                ->select('segment_id', 'segment_number', 'video_url', 'audio_url', 'video_time_point_start', 'video_time_point_end')
+                ->get();
+
+            // 检查是否所有分镜都有配音和视频
+            $missingVideos = $segments->filter(function($segment) {
+                return empty($segment->audio_url) || empty($segment->video_url);
+            });
+
+            if ($missingVideos->isNotEmpty()) {
+                Utils::throwError('20003:存在未完成配音或视频的分镜,请确保所有分镜都已完成配音或视频');
+            }
+        }
 
         if ($segments->isEmpty()) {
             Utils::throwError('20003:未找到该剧集的分镜数据');
@@ -4408,26 +4439,27 @@ class AnimeService
             ->where('id', $episodeId)
             ->value('complete_video_url');
 
-        // 检查是否所有分镜都有配音
-        $missingVideos = $segments->filter(function($segment) {
-            return empty($segment->audio_url);
-        });
-
-        if ($missingVideos->isNotEmpty()) {
-            Utils::throwError('20003:存在未完成配音的分镜,请确保所有分镜都已完成配音');
-        }
 
         // 构建 generate_json
         $generateJson = [];
         $sequence = 1;
         foreach ($segments as $segment) {
-            $generateJson[] = [
-                'sequence' => $sequence++,
-                'video_url' => $segment->video_url,
-                'audio_url' => $segment->audio_url,
-                'video_time_point_start' => $segment->video_time_point_start,
-                'video_time_point_end' => $segment->video_time_point_end
-            ];
+            if ((int)$ace_mode === 1) {
+                $generateJson[] = [
+                    'sequence' => $sequence++,
+                    'video_url' => $segment->video_url,
+                    'video_time_point_start' => $segment->video_time_point_start,
+                    'video_time_point_end' => $segment->video_time_point_end
+                ];
+            }else {
+                $generateJson[] = [
+                    'sequence' => $sequence++,
+                    'video_url' => $segment->video_url,
+                    'audio_url' => $segment->audio_url,
+                    'video_time_point_start' => $segment->video_time_point_start,
+                    'video_time_point_end' => $segment->video_time_point_end
+                ];
+            }            
         }
 
         // 创建任务