|
|
@@ -229,11 +229,37 @@ class AIVideoGenerationService
|
|
|
// 如果任务成功,获取结果URL
|
|
|
if ($taskStatus === 'done' && isset($result['video_url'])) {
|
|
|
if (isset($result['video_url'])) {
|
|
|
- $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
- $video_ext = getVideoExtFromUrl($result['video_url']);
|
|
|
- $video_name = $video_name . $video_ext;
|
|
|
- // 将视频另存到tos
|
|
|
- $url = uploadStreamByTos('video', file_get_contents($result['video_url']), $video_name);
|
|
|
+ // 下载视频内容
|
|
|
+ $videoContent = file_get_contents($result['video_url']);
|
|
|
+
|
|
|
+ // 从任务中获取视频分辨率,仅480p视频执行480p->720p超分
|
|
|
+ if (strpos(strtoupper((string)$task->video_resolution), '480') !== false) {
|
|
|
+ dLog('generate')->info('即梦检测到480p视频,开始480p->720p超分', [
|
|
|
+ 'original_url' => $result['video_url'],
|
|
|
+ 'video_resolution' => $task->video_resolution,
|
|
|
+ 'size' => round(strlen($videoContent) / 1024 / 1024, 2) . 'MB'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $url = upgrade480pTo720p($videoContent, 'video', true);
|
|
|
+ if (!$url) {
|
|
|
+ // 超分失败,上传原视频
|
|
|
+ dLog('generate')->warning('即梦视频超分失败,使用原视频');
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($result['video_url']);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 非480p视频,直接保存原视频
|
|
|
+ dLog('generate')->info('即梦视频非480p,直接保存', [
|
|
|
+ 'original_url' => $result['video_url'],
|
|
|
+ 'video_resolution' => $task->video_resolution
|
|
|
+ ]);
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($result['video_url']);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
$returnData['result_url'] = $url;
|
|
|
|
|
|
// 视频分辨率标准化(压缩前处理,避免压缩后重复上传)
|
|
|
@@ -1262,11 +1288,37 @@ class AIVideoGenerationService
|
|
|
// 任务成功,处理结果
|
|
|
if (isset($responseData['content']['video_url'])) {
|
|
|
$video_url = $responseData['content']['video_url'];
|
|
|
- // 下载并保存视频
|
|
|
- $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
- $video_ext = getVideoExtFromUrl($video_url);
|
|
|
- $video_name = $video_name . $video_ext;
|
|
|
- $url = uploadStreamByTos('video', file_get_contents($video_url), $video_name);
|
|
|
+ // 下载视频内容
|
|
|
+ $videoContent = file_get_contents($video_url);
|
|
|
+
|
|
|
+ // 从任务中获取视频分辨率,仅480p视频执行480p->720p超分
|
|
|
+ if (strpos(strtoupper((string)$task->video_resolution), '480') !== false) {
|
|
|
+ dLog('generate')->info('Seedance检测到480p视频,开始480p->720p超分', [
|
|
|
+ 'original_url' => $video_url,
|
|
|
+ 'video_resolution' => $task->video_resolution,
|
|
|
+ 'size' => round(strlen($videoContent) / 1024 / 1024, 2) . 'MB'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $url = upgrade480pTo720p($videoContent, 'video', true);
|
|
|
+ if (!$url) {
|
|
|
+ // 超分失败,上传原视频
|
|
|
+ dLog('generate')->warning('Seedance视频超分失败,使用原视频');
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($video_url);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 非480p视频,直接保存原视频
|
|
|
+ dLog('generate')->info('Seedance视频非480p,直接保存', [
|
|
|
+ 'original_url' => $video_url,
|
|
|
+ 'video_resolution' => $task->video_resolution
|
|
|
+ ]);
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($video_url);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
$updateData['result_url'] = $url;
|
|
|
|
|
|
// 视频分辨率标准化(压缩前处理,避免压缩后重复上传)
|
|
|
@@ -1417,11 +1469,37 @@ class AIVideoGenerationService
|
|
|
if (isset($data['content']['video_url'])) {
|
|
|
$video_url = $data['content']['video_url'];
|
|
|
try {
|
|
|
- // 下载并保存视频
|
|
|
- $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
- $video_ext = getVideoExtFromUrl($video_url);
|
|
|
- $video_name = $video_name . $video_ext;
|
|
|
- $url = uploadStreamByTos('video', file_get_contents($video_url), $video_name);
|
|
|
+ // 下载视频内容
|
|
|
+ $videoContent = file_get_contents($video_url);
|
|
|
+
|
|
|
+ // 从任务中获取视频分辨率,仅480p视频执行480p->720p超分
|
|
|
+ if (strpos(strtoupper((string)$task->video_resolution), '480') !== false) {
|
|
|
+ dLog('generate')->info('Seedance回调检测到480p视频,开始480p->720p超分', [
|
|
|
+ 'original_url' => $video_url,
|
|
|
+ 'video_resolution' => $task->video_resolution,
|
|
|
+ 'size' => round(strlen($videoContent) / 1024 / 1024, 2) . 'MB'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $url = upgrade480pTo720p($videoContent, 'video', true);
|
|
|
+ if (!$url) {
|
|
|
+ // 超分失败,上传原视频
|
|
|
+ dLog('generate')->warning('Seedance回调视频超分失败,使用原视频');
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($video_url);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 非480p视频,直接保存原视频
|
|
|
+ dLog('generate')->info('Seedance回调视频非480p,直接保存', [
|
|
|
+ 'original_url' => $video_url,
|
|
|
+ 'video_resolution' => $task->video_resolution
|
|
|
+ ]);
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($video_url);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
$updateData['result_url'] = $url;
|
|
|
|
|
|
// 视频分辨率标准化(压缩前处理,避免压缩后重复上传)
|
|
|
@@ -1907,11 +1985,37 @@ class AIVideoGenerationService
|
|
|
$video = $taskData['task_result']['videos'][0];
|
|
|
$video_url = $video['url'];
|
|
|
|
|
|
- // 下载并保存视频
|
|
|
- $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
- $video_ext = getVideoExtFromUrl($video_url);
|
|
|
- $video_name = $video_name . $video_ext;
|
|
|
- $url = uploadStreamByTos('video', file_get_contents($video_url), $video_name);
|
|
|
+ // 下载视频内容
|
|
|
+ $videoContent = file_get_contents($video_url);
|
|
|
+
|
|
|
+ // 从任务中获取视频分辨率,仅480p视频执行480p->720p超分
|
|
|
+ if (strpos(strtoupper((string)$task->video_resolution), '480') !== false) {
|
|
|
+ dLog('generate')->info('可灵检测到480p视频,开始480p->720p超分', [
|
|
|
+ 'original_url' => $video_url,
|
|
|
+ 'video_resolution' => $task->video_resolution,
|
|
|
+ 'size' => round(strlen($videoContent) / 1024 / 1024, 2) . 'MB'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $url = upgrade480pTo720p($videoContent, 'video', true);
|
|
|
+ if (!$url) {
|
|
|
+ // 超分失败,上传原视频
|
|
|
+ dLog('generate')->warning('可灵视频超分失败,使用原视频');
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($video_url);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 非480p视频,直接保存原视频
|
|
|
+ dLog('generate')->info('可灵视频非480p,直接保存', [
|
|
|
+ 'original_url' => $video_url,
|
|
|
+ 'video_resolution' => $task->video_resolution
|
|
|
+ ]);
|
|
|
+ $video_name = 'ai_generation_' . time() . '_' . uniqid();
|
|
|
+ $video_ext = getVideoExtFromUrl($video_url);
|
|
|
+ $video_name = $video_name . $video_ext;
|
|
|
+ $url = uploadStreamByTos('video', $videoContent, $video_name);
|
|
|
+ }
|
|
|
$updateData['result_url'] = $url;
|
|
|
|
|
|
// 视频分辨率标准化(压缩前处理,避免压缩后重复上传)
|