jukrapopk commited on
Commit
ac394ea
·
1 Parent(s): 3ae13be

fix: update port to use env + rempove framerate cap + put video on repeat

Browse files
Files changed (1) hide show
  1. src/app.py +14 -9
src/app.py CHANGED
@@ -2,8 +2,10 @@ from flask import Flask, Response, stream_with_context
2
  import cv2
3
  import threading
4
  import time
 
5
 
6
  app = Flask(__name__)
 
7
 
8
  latest_frame = None
9
  lock = threading.Lock()
@@ -27,13 +29,16 @@ def video_reader():
27
  while True:
28
  ret, frame = cap.read()
29
 
30
- if ret:
 
 
 
31
  with lock:
32
  cv2.putText(frame, f"{measured_fps: .0f}", (frame.shape[1] - 70, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
33
  latest_frame = frame
34
- frame_count += 1
35
 
36
  # measure FPS
 
37
  now = time.time()
38
  if now - last_time >= rolling_duration:
39
  measured_fps = frame_count / (now - last_time)
@@ -41,12 +46,12 @@ def video_reader():
41
  last_time = now
42
 
43
  # control framerate
44
- next_frame_time += frame_duration
45
- sleep_time = next_frame_time - time.time()
46
- if sleep_time > 0:
47
- time.sleep(sleep_time)
48
- else:
49
- next_frame_time = time.time()
50
 
51
  def generate():
52
  while True:
@@ -65,4 +70,4 @@ def video_feed():
65
  if __name__ == '__main__':
66
  t = threading.Thread(target=video_reader, daemon=True)
67
  t.start()
68
- app.run(host='0.0.0.0', port=5000, threaded=True)
 
2
  import cv2
3
  import threading
4
  import time
5
+ import os
6
 
7
  app = Flask(__name__)
8
+ PORT = int(os.environ.get("PORT", 5000))
9
 
10
  latest_frame = None
11
  lock = threading.Lock()
 
29
  while True:
30
  ret, frame = cap.read()
31
 
32
+ if not ret:
33
+ cap.set(cv2.CAP_PROP_POS_FRAMES, 0) # Rewind to start if video ends
34
+ continue
35
+ else:
36
  with lock:
37
  cv2.putText(frame, f"{measured_fps: .0f}", (frame.shape[1] - 70, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
38
  latest_frame = frame
 
39
 
40
  # measure FPS
41
+ frame_count += 1
42
  now = time.time()
43
  if now - last_time >= rolling_duration:
44
  measured_fps = frame_count / (now - last_time)
 
46
  last_time = now
47
 
48
  # control framerate
49
+ # next_frame_time += frame_duration
50
+ # sleep_time = next_frame_time - time.time()
51
+ # if sleep_time > 0:
52
+ # time.sleep(sleep_time)
53
+ # else:
54
+ # next_frame_time = time.time()
55
 
56
  def generate():
57
  while True:
 
70
  if __name__ == '__main__':
71
  t = threading.Thread(target=video_reader, daemon=True)
72
  t.start()
73
+ app.run(host='0.0.0.0', port=PORT, threaded=True)