lh 3 هفته پیش
والد
کامیت
655fdc837a
2فایلهای تغییر یافته به همراه56 افزوده شده و 1 حذف شده
  1. 55 0
      app/Http/Controllers/Anime/AnimeController.php
  2. 1 1
      resources/views/animeIndex.blade.php

+ 55 - 0
app/Http/Controllers/Anime/AnimeController.php

@@ -3152,6 +3152,61 @@ class AnimeController extends BaseController
                     
                     // 调用统一API创建任务
                     $task = $this->AIVideoGenerationService->createUnifiedApiTask($unifiedParams);
+                } elseif ($this->AnimeService->isSeedance20SeriesModel($model)) {
+                    // 豆包Seedance 2.0(百度AI网关)/ 快快AI Seedance 2.0/2.5:参考图/配音音频需要先上传为素材
+                    $isKuaikuai = $this->AnimeService->isKuaikuaiSeedanceModel($model);
+                    // 保存原始参考图用于任务记录
+                    $videoParams['reference_images'] = $reference_images;
+
+                    if ($reference_images) {
+                        // 限制只传入9张参考图
+                        $reference_images = array_slice($reference_images, 0, 9);
+
+                        // 维护ref_image_url字段(参考图URL,JSON数组,与智帧分支保持一致)
+                        $videoParams['ref_image_url'] = json_encode($reference_images, 256);
+
+                        // 参考图上传为素材(百度网关/快快AI),上传失败时同步清理提示词中的<图片N>标记
+                        $reference_image_assets = $isKuaikuai
+                            ? $this->AIVideoGenerationService->processReferenceImagesToKuaikuaiAssets($reference_images, $videoParams['prompt'])
+                            : $this->AIVideoGenerationService->processReferenceImagesToSeedance20Assets($reference_images, $videoParams['prompt']);
+
+                        // 素材上传失败后提示词可能被清理,同步更新视频参数中的提示词
+                        $videoParams['prompt'] = trim($videoParams['prompt']);
+                        $videoParams['content'][0]['text'] = trim($videoParams['prompt']);
+                        $videoParams['reference_image_assets'] = $reference_image_assets;
+                    }
+
+                    // 配音音频:快快AI上传为素材;百度/doubao走content audio_url
+                    if ($canUseAudio && $audioUrl) {
+                        if ($isKuaikuai) {
+                            $reference_audio_assets = $this->AIVideoGenerationService->processReferenceAudiosToKuaikuaiAssets([$audioUrl], $videoParams['prompt']);
+                            $videoParams['reference_audio_assets'] = $reference_audio_assets;
+                        } else {
+                            $videoParams['content'][] = [
+                                'type' => 'audio_url',
+                                'audio_url' => [
+                                    'url' => $audioUrl,
+                                ],
+                                'role' => 'reference_audio',
+                            ];
+                        }
+
+                        // 优化提示词,增加音频相关描述
+                        $audioPrompt = "全程使用音频1作为视频配音。" . $videoParams['prompt'];
+                        $videoParams['prompt'] = $audioPrompt;
+                        $videoParams['content'][0]['text'] = $audioPrompt;
+                    } elseif ($audioDuration) {
+                        // 有音频时长则需将视频时长设置为比音频时长更长的整数
+                        $videoParams['video_duration'] = max(4, min(12, ceil($audioDuration)));
+                    }
+
+                    // 快快AI走聚合网关 /v1/video/generations(火山豆包格式)
+                    if ($isKuaikuai) {
+                        $videoParams['gateway_base_url'] = env('KUAIKUAI_AI_BASE_URL', 'https://ai-api.kkidc.com');
+                        $task = $this->AIVideoGenerationService->createKuaikuaiVideoTask($videoParams);
+                    } else {
+                        $task = $this->AIVideoGenerationService->createSeedance20Task($videoParams);
+                    }
                 } else {
                     // Seedance模型(默认)
                     // 检查是否为 Seedance 2.0 模型,如果是则需要处理配音音频

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
resources/views/animeIndex.blade.php