我有以下代码创建 gstreamer 管道来处理 HLS 流。
cap = cv2.VideoCapture(
f"souphttpsrc is_live=true location={hls_stream_link} ! hlsdemux !
queue ! decodebin ! videorate ! video/x-raw,framerate=1/1 !
videoconvert ! appsink max-buffers=1 drop=true sync=false",
cv2.CAP_GSTREAMER)
我现在像这样阅读流:
while True:
success, frame = cap.read()
time.sleep(1.0)
请注意,我以 1 FPS 读取流并具有max-buffers=1 drop=true sync=false. 通过这样做,我总是从缓冲区必须提供的流中获取最新的帧。
问题是 CPU 使用率非常高,在我的 i7 机器上有时会飙升至 120%。取消睡眠会使情况变得更糟。
关于为什么处理 HLS 流如此 CPU 密集型的任何解决方案或想法都会很棒。此外,关于如何减少使用的想法也会很棒。
幕布斯6054654
相关分类