Я создал проект python, который открывает камеры с использованием протокола RTSP с использованием OpenCV и форматирует каждый кадр в .jpg и base64 string и, наконец, publi sh it к Redis Q.
Там у меня есть приложение NodeJS, которое подписывается каждому Q и отправляет его клиенту, используя socket.io .
, вот мой код python:
while(video_capture.isOpened()):
ret, frame = video_capture.read()
retval, buffer_img1 = cv2.imencode('.jpg', frame)
jpg_as_text = base64.b64encode(buffer_img1)
print('len1', len(buffer_img1))
queue.publish('Camera_1Q', jpg_as_text)
, но ... это очень медленно !
в клиенте (ReactJs) это похоже на 2 кадра в секунду. и я думаю это из-за длинной строки, которая проходит через Redis .
3 вопроса:
1 . это .jpg лучший формат для этого?
2 . Как я могу сжать каждый кадр, чтобы помочь Redis быть быстрее?
3 . Как я могу отправить только те пиксели, которые изменились (frame1 - frame2).
Если у меня есть проблемы с архитектурой, дайте мне знать. Если я пришел к ложному выводу, дайте мне знать.
спасибо .