File size: 2,233 Bytes
b6093b0 3b25c9f b6093b0 3b25c9f b6093b0 44d365d b6093b0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
from fastapi import FastAPI, UploadFile, File, HTTPException, Form
from fastapi.responses import FileResponse, HTMLResponse
from typing import Optional
from utils.process_video import process_video
import shutil, os
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello from multilang-asr-captioner"}
@app.get("/submit_video/")
async def get_form():
html_content = """
<html>
<body>
<form action="/process_video/" enctype="multipart/form-data" method="post">
<input type="file" name="file"><br>
Font size: <input type="number" name="fontsize" value="32"><br>
Background color: <input type="text" name="bg_color" value="#070a13b3"><br>
Max words per line: <input type="number" name="max_words_per_line" value="8"><br>
<input type="submit">
</form>
</body>
</html>
"""
return HTMLResponse(content=html_content)
@app.post("/process_video/")
async def process_video_api(file: UploadFile = File(...),
fontsize: Optional[int] = Form(32),
bg_color: Optional[str] = Form("#070a13b3"),
max_words_per_line: Optional[int] = Form(8)):
try:
if not str(file.filename).endswith('.mp4'):
raise HTTPException(status_code=400, detail="Invalid file type. Please upload an MP4 file.")
# Save the uploaded file to a temporary file
temp_dir = os.path.join(os.getcwd(),"temp")
os.makedirs(temp_dir, exist_ok=True)
temp_input_path = os.path.join(temp_dir, file.filename)
# Copy UploadFile to the temp_input_path
with open(temp_input_path, 'wb') as buffer:
try:
shutil.copyfileobj(file.file, buffer)
finally:
file.file.close()
# Process the video
output_path = process_video(temp_input_path, fontsize, bg_color, max_words_per_line)
# Return the processed video file
return FileResponse(output_path, media_type="video/mp4", filename=f"result_{file.filename}")
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
|