from fastapi import FastAPI, File, UploadFile, Form from fastapi.responses import FileResponse import tempfile import shutil import os app = FastAPI() @app.post("/merge") async def merge_endpoint( files: list[UploadFile] = File(...), orig_vol: float = Form(1.0), music_vol: float = Form(0.5), ): temp_dir = tempfile.mkdtemp() try: saved_files = [] # Save uploaded files to disk for upload_file in files: file_path = os.path.join(temp_dir, upload_file.filename) with open(file_path, "wb") as out_file: content = await upload_file.read() out_file.write(content) saved_files.append(file_path) # Your merge logic here # For demo: just return first uploaded file as "merged" output if not saved_files: return {"error": "No files uploaded"} output_path = saved_files[0] # Return the merged file (video or audio) return FileResponse(output_path, media_type="application/octet-stream", filename="merged_output") finally: # Cleanup temp_dir after response is sent shutil.rmtree(temp_dir)