Задержка OpenCV при чтении потока HLS - PullRequest
0 голосов
/ 23 октября 2019

В настоящее время я работаю над проектом, который должен выполнить некоторую классификацию потоков 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 секунд, чтобы прочитать следующий кадр? Я искал в Интернете ответы на этот вопрос, но ничего не помогло.

...