Ver código fonte

调整视频生成后截止时间点为音频时长

lh 2 meses atrás
pai
commit
63f68f6599

+ 2 - 1
app/Console/Commands/CheckVideoGenerationTasksCommand.php

@@ -144,7 +144,8 @@ class CheckVideoGenerationTasksCommand extends Command
                     if ($video_duration > 0) {
                         $updateData['video_duration'] = $video_duration;
                         $updateData['video_time_point_start'] = 0;
-                        $updateData['video_time_point_end'] = $video_duration;
+                        // $updateData['video_time_point_end'] = $video_duration;
+                        $updateData['video_time_point_end'] = $segment->audio_duration ?? 0;
                     }
                     
                     $successCount++;

+ 6 - 2
app/Http/Controllers/Anime/AnimeController.php

@@ -486,7 +486,8 @@ class AnimeController extends BaseController
                                     if (isset($statusResult['video_duration']) && $statusResult['video_duration'] > 0) {
                                         $segmentUpdateData['video_duration'] = $statusResult['video_duration'];
                                         $segmentUpdateData['video_time_point_start'] = 0;
-                                        $segmentUpdateData['video_time_point_end'] = $statusResult['video_duration'];
+                                        // $segmentUpdateData['video_time_point_end'] = $statusResult['video_duration'];
+                                        $segmentUpdateData['video_time_point_end'] = $segment->audio_duration ?? 0;
                                     }
                                     
                                     $updateResult = DB::table('mp_episode_segments')
@@ -817,6 +818,7 @@ class AnimeController extends BaseController
                     'task_id' => $task->id,
                     'segment_number' => $segment->segment_number,
                     'tail_frame' => $segment->tail_frame,
+                    'audio_duration' => $segment->audio_duration,
                 ];
                 
             } catch (\Exception $e) {
@@ -921,6 +923,7 @@ class AnimeController extends BaseController
                                             if ($segmentTask['task_id'] == $taskId) {
                                                 $segmentId = $segmentTask['segment_id'];
                                                 $tail_frame = $segmentTask['tail_frame'];
+                                                $audio_duration = $segmentTask['audio_duration'];
                                                 break;
                                             }
                                         }
@@ -939,7 +942,8 @@ class AnimeController extends BaseController
                                             if (isset($statusResult['video_duration']) && $statusResult['video_duration'] > 0) {
                                                 $segmentUpdateData['video_duration'] = $statusResult['video_duration'];
                                                 $segmentUpdateData['video_time_point_start'] = 0;
-                                                $segmentUpdateData['video_time_point_end'] = $statusResult['video_duration'];
+                                                // $segmentUpdateData['video_time_point_end'] = $statusResult['video_duration'];
+                                                $segmentUpdateData['video_time_point_end'] = $audio_duration ?? 0;
                                             }
                                             
                                             $updateResult = DB::table('mp_episode_segments')

+ 9 - 3
app/Services/AIGeneration/AIVideoGenerationService.php

@@ -341,7 +341,9 @@ class AIVideoGenerationService
                     if (isset($statusInfo['video_duration']) && $statusInfo['video_duration'] > 0) {
                         $segmentUpdateData['video_duration'] = $statusInfo['video_duration'];
                         $segmentUpdateData['video_time_point_start'] = 0;
-                        $segmentUpdateData['video_time_point_end'] = $statusInfo['video_duration'];
+                        // $segmentUpdateData['video_time_point_end'] = $statusInfo['video_duration'];
+                        $audio_duration = DB::table('mp_episode_segments')->where('segment_id', $segment_id)->value('audio_duration');
+                        $segmentUpdateData['video_time_point_end'] = $audio_duration ?? 0;
                     }
                     
                     // 更新分镜表
@@ -601,7 +603,9 @@ class AIVideoGenerationService
                     if (isset($statusInfo['video_duration']) && $statusInfo['video_duration'] > 0) {
                         $segmentUpdateData['video_duration'] = $statusInfo['video_duration'];
                         $segmentUpdateData['video_time_point_start'] = 0;
-                        $segmentUpdateData['video_time_point_end'] = $statusInfo['video_duration'];
+                        // $segmentUpdateData['video_time_point_end'] = $statusInfo['video_duration'];
+                        $audio_duration = DB::table('mp_episode_segments')->where('segment_id', $segment_id)->value('audio_duration');
+                        $segmentUpdateData['video_time_point_end'] = $audio_duration ?? 0;
                     }
                     
                     // 更新分镜表
@@ -1377,7 +1381,9 @@ class AIVideoGenerationService
                     if (isset($statusInfo['video_duration']) && $statusInfo['video_duration'] > 0) {
                         $segmentUpdateData['video_duration'] = $statusInfo['video_duration'];
                         $segmentUpdateData['video_time_point_start'] = 0;
-                        $segmentUpdateData['video_time_point_end'] = $statusInfo['video_duration'];
+                        // $segmentUpdateData['video_time_point_end'] = $statusInfo['video_duration'];
+                        $audio_duration = DB::table('mp_episode_segments')->where('segment_id', $segment_id)->value('audio_duration');
+                        $segmentUpdateData['video_time_point_end'] = $audio_duration ?? 0;
                     }
                     
                     // 更新分镜表