Skip to content

Commit 8f3ee62

Browse files
authored
Merge pull request #39 from Nyabsi/cv2_ffmpeg_udp
camera: allow udp stream through ffmpeg
2 parents 05814e7 + 2b0b3fd commit 8f3ee62

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

BabbleApp/camera.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ def run(self):
106106
if self.cancellation_event.wait(WAIT_TIME):
107107
return
108108
self.current_capture_source = self.config.capture_source
109-
self.cv2_camera = cv2.VideoCapture(self.current_capture_source)
109+
if self.config.use_ffmpeg == True:
110+
self.cv2_camera = cv2.VideoCapture(self.current_capture_source, cv2.CAP_FFMPEG)
111+
else:
112+
self.cv2_camera = cv2.VideoCapture(self.current_capture_source)
110113
if not self.settings.gui_cam_resolution_x == 0: self.cv2_camera.set(cv2.CAP_PROP_FRAME_WIDTH, self.settings.gui_cam_resolution_x)
111114
if not self.settings.gui_cam_resolution_y == 0: self.cv2_camera.set(cv2.CAP_PROP_FRAME_HEIGHT, self.settings.gui_cam_resolution_y)
112115
if not self.settings.gui_cam_framerate == 0: self.cv2_camera.set(cv2.CAP_PROP_FPS, self.settings.gui_cam_framerate)

BabbleApp/camera_widget.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,18 @@ def render(self, window, event, values):
242242
):
243243
print("\033[94m[INFO] New value: {}\033[0m".format(values[self.gui_camera_addr]))
244244
try:
245+
self.config.use_ffmpeg = False
245246
# Try storing ints as ints, for those using wired cameras.
246247
self.config.capture_source = int(values[self.gui_camera_addr])
247248
except ValueError:
248249
if values[self.gui_camera_addr] == "":
249250
self.config.capture_source = None
250251
else:
251-
if len(values[self.gui_camera_addr]) > 5 and "http" not in values[self.gui_camera_addr] and ".mp4" not in values[self.gui_camera_addr]: # If http is not in camera address, add it.
252-
self.config.capture_source = f"http://{values[self.gui_camera_addr]}/"
252+
if len(values[self.gui_camera_addr]) > 5 and "http" not in values[self.gui_camera_addr] and ".mp4" not in values[self.gui_camera_addr] and "udp" not in values[self.gui_camera_addr]: # If http is not in camera address, add it.
253+
self.config.capture_source = f"http://{values[self.gui_camera_addr]}/"
254+
elif "udp" in values[self.gui_camera_addr]:
255+
self.config.use_ffmpeg = True
256+
self.config.capture_source = values[self.gui_camera_addr]
253257
else:
254258
self.config.capture_source = values[self.gui_camera_addr]
255259
changed = True

BabbleApp/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class BabbleCameraConfig(BaseModel):
2020
use_n_calibration: bool = True
2121
gui_vertical_flip: bool = False
2222
gui_horizontal_flip: bool = False
23+
use_ffmpeg: bool = False
2324

2425
class BabbleSettingsConfig(BaseModel):
2526
gui_min_cutoff: str = "0.9"

0 commit comments

Comments
 (0)