4e06f4abe2
- 后端: 空镜素材迁移到 config/materials.json,duration从文件名_{N}s_自动解析
- 后端: 新增 POST /api/v1/materials/match 接口,后端做关键词匹配
- 前端: VideoGeneration 空镜匹配改为调用后端接口
- 前端: 人物出镜素材改为本地文件选择器直接选取,不走素材库
- 前端: 视频生成流程简化,移除Vidu对口型和七牛云上传
- Rust: 视频合成支持从随机起始时间截取人物素材片段
- Rust: 修复ffprobe参数错误(添加-show_entries format=duration)
33 lines
892 B
Python
33 lines
892 B
Python
"""
|
|
空镜素材 API
|
|
============
|
|
|
|
提供空镜素材匹配接口。
|
|
"""
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from app.schemas.common import ApiResponse, success_response
|
|
from app.schemas.materials import MatchMaterialRequest, MaterialInfo
|
|
from app.services.material_service import match_material
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/match", response_model=ApiResponse[MaterialInfo | None])
|
|
async def match_material_endpoint(request: MatchMaterialRequest):
|
|
"""
|
|
根据场景描述和所需时长匹配空镜素材
|
|
|
|
返回匹配到的素材信息,无匹配返回 data: null
|
|
"""
|
|
result = match_material(request.scene, request.duration)
|
|
|
|
if result is None:
|
|
return success_response(data=None, message="未匹配到素材")
|
|
|
|
return success_response(
|
|
data=MaterialInfo(url=result["url"], duration=result["duration"]),
|
|
message="匹配成功",
|
|
)
|