添加视频复刻和优化脚本旁白

This commit is contained in:
Azmat@qq.com
2026-08-24 10:48:01 +08:00
parent 368586d33e
commit 2f5b7304b0
33 changed files with 1172 additions and 109 deletions
+37
View File
@@ -1,3 +1,4 @@
import logging
import uuid
from django.db import transaction
@@ -27,6 +28,8 @@ from .serializers import (
)
from .services import enqueue_standalone_images
logger = logging.getLogger(__name__)
class GenerateImageView(APIView):
"""独立生图(不绑项目)· 图片创作/模特图/平台套图共用 —— **异步**。
@@ -693,6 +696,40 @@ def _set_free_video_generated_assets_deleted(task, deleted):
Asset.objects.filter(team=task.team, origin_task=task, purged_at__isnull=True).update(is_deleted=deleted)
class VideoDigestView(APIView):
"""视频复刻 · 上传参考视频提炼分镜稿(不绑项目)。
POST /api/ai/video-digest/ multipart file → 中文分镜稿。慢(30~60 秒),计一次文本费。
"""
parser_classes = [MultiPartParser, FormParser]
def post(self, request):
from .video_digest import VideoDigestError, digest_team_video
upload = request.FILES.get("file") or request.data.get("file")
if upload is None:
return Response({"detail": "请先上传参考视频"}, status=status.HTTP_400_BAD_REQUEST)
team = get_current_team(request.user)
try:
result = digest_team_video(
team=team,
user=request.user,
upload=upload,
model_config_id=request.data.get("model_config_id") or None,
)
except VideoDigestError as exc:
return Response({"detail": str(exc)}, status=status.HTTP_400_BAD_REQUEST)
except Exception as exc: # noqa: BLE001 — 模型/网络失败:走统一安全文案
logger.exception("video digest failed")
public_error = classify_generation_error(exc, operation="video_digest")
return Response(
{"detail": public_error.fallback_message, "error": public_error.as_dict()},
status=status.HTTP_502_BAD_GATEWAY,
)
return Response({"name": getattr(upload, "name", "") or "参考视频", **result})
class FreeVideoView(APIView):
"""自由创作·视频生成(不绑项目,universal 全能参考 / keyframe 首尾帧)。