ricardo238costa commited on
Commit
fe0ec2c
·
verified ·
1 Parent(s): 30ed123

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +4 -30
main.py CHANGED
@@ -1,6 +1,5 @@
1
  from fastapi import FastAPI, UploadFile, File
2
  from fastapi.responses import FileResponse
3
- from starlette.middleware.base import BaseHTTPMiddleware
4
  import cv2
5
  import subprocess
6
  import uuid
@@ -16,16 +15,12 @@ async def process_video(file: UploadFile = File(...)):
16
  input_filename = f"/tmp/input_{uuid.uuid4()}.mp4"
17
  output_filename = f"/tmp/output_{uuid.uuid4()}.mp4"
18
 
19
- try:
20
- with open(input_filename, "wb") as f:
21
- f.write(await file.read())
22
- except Exception as e:
23
- return {"error": f"Erro ao salvar o vídeo de entrada: {str(e)}"}
24
 
25
  cap = cv2.VideoCapture(input_filename)
26
  success, frame = cap.read()
27
  if not success:
28
- os.remove(input_filename)
29
  return {"error": "Não foi possível ler o vídeo."}
30
 
31
  roi_box = detect_product_in_frame(frame)
@@ -40,30 +35,9 @@ async def process_video(file: UploadFile = File(...)):
40
  '-c:a', 'copy',
41
  output_filename
42
  ]
43
- try:
44
- subprocess.run(crop_cmd, check=True)
45
- except subprocess.CalledProcessError as e:
46
- os.remove(input_filename)
47
- return {"error": f"Erro ao processar o vídeo com FFmpeg: {str(e)}"}
48
 
49
  os.remove(input_filename)
50
-
51
- if os.path.exists(output_filename):
52
- response = FileResponse(output_filename, media_type="video/mp4", filename="cropped_video.mp4")
53
- response.headers["X-Delete-File"] = output_filename
54
- return response
55
- else:
56
- return {"error": "O arquivo de saída não foi gerado."}
57
  else:
58
- os.remove(input_filename)
59
  return {"error": "Não foi possível detectar o produto para realizar o crop."}
60
-
61
- class CleanupMiddleware(BaseHTTPMiddleware):
62
- async def dispatch(self, request, call_next):
63
- response = await call_next(request)
64
- file_to_delete = response.headers.get("X-Delete-File")
65
- if file_to_delete and os.path.exists(file_to_delete):
66
- os.remove(file_to_delete)
67
- return response
68
-
69
- app.add_middleware(CleanupMiddleware)
 
1
  from fastapi import FastAPI, UploadFile, File
2
  from fastapi.responses import FileResponse
 
3
  import cv2
4
  import subprocess
5
  import uuid
 
15
  input_filename = f"/tmp/input_{uuid.uuid4()}.mp4"
16
  output_filename = f"/tmp/output_{uuid.uuid4()}.mp4"
17
 
18
+ with open(input_filename, "wb") as f:
19
+ f.write(await file.read())
 
 
 
20
 
21
  cap = cv2.VideoCapture(input_filename)
22
  success, frame = cap.read()
23
  if not success:
 
24
  return {"error": "Não foi possível ler o vídeo."}
25
 
26
  roi_box = detect_product_in_frame(frame)
 
35
  '-c:a', 'copy',
36
  output_filename
37
  ]
38
+ subprocess.run(crop_cmd)
 
 
 
 
39
 
40
  os.remove(input_filename)
41
+ return FileResponse(output_filename, media_type="video/mp4", filename="cropped_video.mp4")
 
 
 
 
 
 
42
  else:
 
43
  return {"error": "Não foi possível detectar o produto para realizar o crop."}