|
|
@@ -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
|