读取HLS流时的OpenCV延迟

时间:2019-10-23 00:24:59

标签: python opencv http-live-streaming

当前,我正在一个项目上进行实时HLS流分类。我正在使用streamlink和OpenCV读取上述流。

这是我的代码的样子(或多或少):

from threading import Thread
import cv2, time

url = streamlink.streams(
    'https://www.youtube.com/watch?v=1EiC9bvVGnk')['480p']

capture = cv2.VideoCapture(url.url)

# FPS = 1/X
# X = desired FPS
FPS = 1 / 24
FPS_MS = int(FPS * 1000)

while True:
    res, frame = capture.read()

    # Do some classification stuff here with the frame that was read.

    cv2.imshow('frame', frame)
    if cv2.waitKey(FPS_MS) & 0xFF == ord('q'):
        break
    time.sleep(FPS)

capture.release()

问题是,在大约5秒钟内,我将能够从流中无缝读取,然后capture.read()方法调用需要约15-20秒才能返回,然后再进行5秒钟的无缝流传输,然后再进行另一个严重的延迟。

我不知道问题是什么,为什么OpenCV会在合理的时间内(大致等于所需的FPS)读取每个帧,然后在大约5秒钟后随机地花费大约20秒来读取下一帧?我在网上寻找该问题的答案,但没有任何帮助。

0 个答案:

没有答案