Rivalcoder commited on
Commit
9775f6e
·
1 Parent(s): a231c85

Add New Version

Browse files
Files changed (1) hide show
  1. app.py +7 -6
app.py CHANGED
@@ -10,7 +10,6 @@ from typing import Dict, Any
10
  from fastapi import FastAPI, HTTPException, File, UploadFile
11
  from pydantic import BaseModel
12
  import gradio as gr
13
- import shutil
14
  import tempfile
15
 
16
  app = FastAPI()
@@ -40,7 +39,7 @@ def load_emotion_model(model_path, device='cuda' if torch.cuda.is_available() el
40
  return model
41
 
42
  # Process the uploaded video (either MP4 or WebM)
43
- def process_video(video_file: UploadFile) -> Dict[str, Any]:
44
  global largest_face_detections
45
  largest_face_detections = [] # Reset detections for new video
46
 
@@ -64,11 +63,13 @@ def process_video(video_file: UploadFile) -> Dict[str, Any]:
64
 
65
  emotions = ['Angry', 'Disgust', 'Fear', 'Happy', 'Sad', 'Surprise', 'Neutral']
66
 
67
- # Save the uploaded video file to a temporary directory
68
  temp_dir = tempfile.mkdtemp()
69
  video_path = os.path.join(temp_dir, "uploaded_video")
70
- with open(video_path, "wb") as buffer:
71
- shutil.copyfileobj(video_file.file, buffer)
 
 
72
 
73
  cap = cv2.VideoCapture(video_path)
74
  if not cap.isOpened():
@@ -166,7 +167,7 @@ class VideoRequest(BaseModel):
166
  @app.post("/process_video/")
167
  async def process_video_request(file: UploadFile = File(...)):
168
  try:
169
- results = process_video(file)
170
  return results
171
  except Exception as e:
172
  raise HTTPException(status_code=500, detail=str(e))
 
10
  from fastapi import FastAPI, HTTPException, File, UploadFile
11
  from pydantic import BaseModel
12
  import gradio as gr
 
13
  import tempfile
14
 
15
  app = FastAPI()
 
39
  return model
40
 
41
  # Process the uploaded video (either MP4 or WebM)
42
+ async def process_video(video_file: UploadFile) -> Dict[str, Any]:
43
  global largest_face_detections
44
  largest_face_detections = [] # Reset detections for new video
45
 
 
63
 
64
  emotions = ['Angry', 'Disgust', 'Fear', 'Happy', 'Sad', 'Surprise', 'Neutral']
65
 
66
+ # Save the uploaded video file to a temporary directory without using shutil
67
  temp_dir = tempfile.mkdtemp()
68
  video_path = os.path.join(temp_dir, "uploaded_video")
69
+
70
+ # Open the video file stream and save it as a local file
71
+ with open(video_path, "wb") as f:
72
+ f.write(await video_file.read())
73
 
74
  cap = cv2.VideoCapture(video_path)
75
  if not cap.isOpened():
 
167
  @app.post("/process_video/")
168
  async def process_video_request(file: UploadFile = File(...)):
169
  try:
170
+ results = await process_video(file)
171
  return results
172
  except Exception as e:
173
  raise HTTPException(status_code=500, detail=str(e))