auto-mix-video / src /api /api.py
yuanxuchang
git init.
ea7ef05
Raw
History Blame Contribute Delete
1.95 kB
import os
from typing import List
import tempfile
from fastapi import APIRouter, HTTPException, UploadFile, File, Form
from src.schema import ReqAutoMixVideo, ResAutoMixVideo
from src.media.video import VideoManager
from src.service.auto_mix_video import MixVideoService
api = APIRouter()
@api.post("/video/mix/auto",
tags=["智能视频混剪"],
summary="视频混剪",
description="自动生成视频混剪结果"
)
async def get_audio_server(req: ReqAutoMixVideo):
try:
mix_video_manager = MixVideoService()
bucket_name, video_url = await mix_video_manager.start(req)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
return ResAutoMixVideo(
bucket_name=bucket_name,
video_url=video_url,
)
@api.post("/video/upload",
tags=["智能视频混剪"],
summary="获取文件 URL",
description="上传文件,获取文件 URL"
)
async def get_audio_minio_url(bucket_name: str = Form(...), video_files: List[UploadFile] = File(...)):
video_manager = VideoManager()
video_url_list = []
for video_file in video_files:
# 创建临时文件
with tempfile.NamedTemporaryFile(delete=False) as temp_file:
# 写入上传内容
temp_file.write(await video_file.read())
file_path = temp_file.name
try:
# 上传文件
bucket_name, video_url = video_manager.upload_file(file_path=file_path, bucket_name=bucket_name)
video_url_list.append(
ResAutoMixVideo(
bucket_name=bucket_name,
video_url=video_url,
)
)
finally:
# 确保删除临时文件
try:
os.unlink(file_path)
except Exception:
pass # 忽略删除错误
return video_url_list