lh 1 miesiąc temu
rodzic
commit
3ca5a9ded3
1 zmienionych plików z 36 dodań i 34 usunięć
  1. 36 34
      app/Services/AIGeneration/AIVideoGenerationService.php

+ 36 - 34
app/Services/AIGeneration/AIVideoGenerationService.php

@@ -3002,54 +3002,56 @@ class AIVideoGenerationService
                 }
                 
                 if ($videoUrl) {
-                    // 保存视频到TOS并超分
+                    // 保存视频到TOS,仅480p视频超分到720p,其余分辨率直接保存
                     try {
                         // 下载视频内容
                         $videoContent = file_get_contents($videoUrl);
-                        
-                        // 使用upgrade480pTo720p方法进行超分(传入视频内容)
-                        dLog('generate')->info('开始对视频进行480p->720p超分', [
-                            'original_url' => $videoUrl,
-                            'size' => round(strlen($videoContent) / 1024 / 1024, 2) . 'MB'
-                        ]);
-                        
-                        $url = upgrade480pTo720p($videoContent, 'video', true);
-                        
-                        if ($url) {
-                            // 超分成功
-                            dLog('generate')->info('视频超分成功', ['enhanced_url' => $url]);
-                            $returnData['result_url'] = $url;
 
-                            // 视频分辨率标准化(压缩前处理,避免压缩后重复上传)
-                            $targetResolution = $this->getTaskTargetResolution($task);
-                            if ($targetResolution) {
-                                $url = $this->ensureStandardVideoResolution($url, $targetResolution);
+                        // 从任务中获取视频分辨率,仅480p视频执行480p->720p超分
+                        if (strpos(strtoupper((string)$task->video_resolution), '480') !== false) {
+                            dLog('generate')->info('检测到480p视频,开始480p->720p超分', [
+                                'original_url' => $videoUrl,
+                                'video_resolution' => $task->video_resolution,
+                                'size' => round(strlen($videoContent) / 1024 / 1024, 2) . 'MB'
+                            ]);
+
+                            $enhancedUrl = upgrade480pTo720p($videoContent, 'video', true);
+                            if ($enhancedUrl) {
+                                dLog('generate')->info('视频超分成功', ['enhanced_url' => $enhancedUrl]);
+                                $url = $enhancedUrl;
+                                $returnData['result_url'] = $url;
+                            } else {
+                                // 超分失败,使用原视频
+                                dLog('generate')->warning('视频超分失败,使用原视频');
+                                $video_name = 'ai_generation_' . time() . '_' . uniqid();
+                                $video_ext = getVideoExtFromUrl($videoUrl);
+                                $video_name = $video_name . $video_ext;
+                                $url = uploadStreamByTos('video', $videoContent, $video_name);
                                 $returnData['result_url'] = $url;
                             }
-                            
-                            // 压缩视频
-                            $compressed_video_url = compressVideo($url);
-                            $returnData['compressed_url'] = $compressed_video_url ?: $url;
                         } else {
-                            // 超分失败,使用原视频
-                            dLog('generate')->warning('视频超分失败,使用原视频');
+                            // 非480p视频,直接保存原视频
+                            dLog('generate')->info('视频非480p,直接保存', [
+                                'original_url' => $videoUrl,
+                                'video_resolution' => $task->video_resolution
+                            ]);
                             $video_name = 'ai_generation_' . time() . '_' . uniqid();
                             $video_ext = getVideoExtFromUrl($videoUrl);
                             $video_name = $video_name . $video_ext;
                             $url = uploadStreamByTos('video', $videoContent, $video_name);
                             $returnData['result_url'] = $url;
+                        }
 
-                            // 视频分辨率标准化(压缩前处理,避免压缩后重复上传)
-                            $targetResolution = $this->getTaskTargetResolution($task);
-                            if ($targetResolution) {
-                                $url = $this->ensureStandardVideoResolution($url, $targetResolution);
-                                $returnData['result_url'] = $url;
-                            }
-                            
-                            // 压缩视频
-                            $compressed_video_url = compressVideo($url);
-                            $returnData['compressed_url'] = $compressed_video_url ?: $url;
+                        // 视频分辨率标准化(压缩前处理,避免压缩后重复上传)
+                        $targetResolution = $this->getTaskTargetResolution($task);
+                        if ($targetResolution) {
+                            $url = $this->ensureStandardVideoResolution($url, $targetResolution);
+                            $returnData['result_url'] = $url;
                         }
+
+                        // 压缩视频
+                        $compressed_video_url = compressVideo($url);
+                        $returnData['compressed_url'] = $compressed_video_url ?: $url;
                     } catch (\Exception $e) {
                         dLog('generate')->error('保存视频到TOS失败', ['error' => $e->getMessage()]);
                         $returnData['result_url'] = $videoUrl; // 如果保存失败,使用原URL