forked from dsutanto/zenai-kpc-python
cap written ffmpeg error
This commit is contained in:
1 parent
706f9261fb
commit
47e9381269
1 file changed
+30
-1
+30
-1
@@ -4,6 +4,7 @@ Runs on RK3588 hardware with RKNN model (320×320 input).
|
||||
Uses ByteTrack (Kalman filter + two-stage IoU association) for tracking.
|
||||
"""
|
||||
|
||||
import contextlib
|
||||
import numpy as np
|
||||
import cv2
|
||||
import csv
|
||||
@@ -12,6 +13,7 @@ import os
|
||||
import shutil
|
||||
import signal
|
||||
import socket
|
||||
import sys
|
||||
import threading
|
||||
import time
|
||||
from collections import deque
|
||||
@@ -871,10 +873,37 @@ def start_control_socket():
|
||||
return srv
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def _quiet_opencv_stderr():
|
||||
"""Silence OpenCV/FFmpeg stderr (DESCRIBE failed, cap.cpp WARN, etc.)."""
|
||||
saved_fd = None
|
||||
devnull_fd = None
|
||||
try:
|
||||
stderr_fd = sys.stderr.fileno()
|
||||
saved_fd = os.dup(stderr_fd)
|
||||
devnull_fd = os.open(os.devnull, os.O_WRONLY)
|
||||
os.dup2(devnull_fd, stderr_fd)
|
||||
except (AttributeError, OSError, ValueError):
|
||||
yield
|
||||
return
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
os.dup2(saved_fd, stderr_fd)
|
||||
os.close(saved_fd)
|
||||
os.close(devnull_fd)
|
||||
|
||||
|
||||
def open_capture(source):
|
||||
if source.lower().startswith(("rtsp://", "http://")):
|
||||
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = RTSP_FFMPEG_OPTIONS
|
||||
cap = cv2.VideoCapture(source, cv2.CAP_FFMPEG)
|
||||
# When STREAM_ERROR_LOG_MAX > 0, native OpenCV/FFmpeg stderr is suppressed;
|
||||
# stream_error_log emits at most that many user-facing messages per outage.
|
||||
if STREAM_ERROR_LOG_MAX > 0:
|
||||
with _quiet_opencv_stderr():
|
||||
cap = cv2.VideoCapture(source, cv2.CAP_FFMPEG)
|
||||
else:
|
||||
cap = cv2.VideoCapture(source, cv2.CAP_FFMPEG)
|
||||
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
|
||||
return cap
|
||||
|
||||
|
||||
Reference in new issue
Block a user