У меня Raspberry Pi с Raspbian 9. У меня установлен OpenCV 4.0.1.У меня подключена веб-камера USB.Малина без головы, я соединяюсь с ssh <user>@<IP> -X
.Цель состоит в том, чтобы получить видеопоток в реальном времени на моем клиентском компьютере.
Проблема в том, что существует значительная задержка в 2 секунды.Кроме того, потоковое воспроизведение нестабильно, это означает медленный, а затем быстрый снова.
Я предполагаю, что SSH просто не может идти в ногу со стандартными 30 кадрами в секунду камеры.Поэтому я стараюсь уменьшить частоту кадров, так как я мог бы жить с более низкой частотой кадров, пока нет заметной задержки.Мои собственные попытки снизить частоту кадров не сработали.
Мой код комментировал части, которые я пытался уменьшить частоту кадров, но не работал.
import cv2
#import time
cap = cv2.VideoCapture(0)
#cap.set(cv2.CAP_PROP_FPS, 5)
while(True):
ret, frame = cap.read()
#time.sleep(1)
#cv2.waitKey(100)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
что я пытался уменьшить частоту кадров:
Я пытался установить cap.set(cv2.CAP_PROP_FPS, 5)
(также пробовал 10 или 1).Если я тогда print(cap.get(cv2.CAP_PROP_FPS))
даст мне частоту кадров, которую я только что установил, но это не повлияет на воспроизведение.
Я попытался использовать time.sleep(1)
в цикле while, но этоне влияет на видео.
Я пытался использовать второй cv2.waitKey(100)
в цикле while, как предложено здесь для Quora: https://qr.ae/TUSPyN, но это также не имеетэффект.
edit 1 (time.wait и waitKey действительно работают):
Как указано в комментарии, time.sleep(1)
и cv2.waitKey(1000)
должны работать ина самом деле они сделали в конце концов.Необходимо было поместить их в конец цикла while после cv2.imshow()
.
. Как указывалось в первом комментарии, возможно, было бы лучше выбрать другую настройку для потокового мультимедиа, что я и считаюсейчас смотрю, чтобы избавиться от лага.
edit 2 (xpra вместо ssh -X):
Мы обнаружили, что даже после всех попыток уменьшить частоту кадров ssh -X
был подоконник запаздывает.Мы обнаружили, что xpra намного быстрее, то есть не требует снижения частоты кадров или разрешения и не имеет заметного лага.