Мне нужно показать видеопоток на реагирующем компоненте с бэкэндом Python + Django.
ТЕКУЩАЯ СИТУАЦИЯ:
Я использую библиотеку opencv для получения потока:
import cv2
[...]
def read_data():
cap = cv2.VideoCapture("rtsp://user:password/bla bla bla")
while(cap.isOpened()):
ret, frame = cap.read()
retval, buffer = cv2.imencode('.jpg', frame)
image_result_base64 = base64.b64encode(buffer)
return HttpResponse(image_result_base64, 200)
В React, где this.state.response_data является значением responseText содержимого вызова бэкэнда:
render ()
{
const img_data ="data:image/png;base64," + this.state.response_data;
return <img id="overView" class="overView" alt="Stream" src={ img_data} width="90%" />
}
Этот подход работает, и во внешнем интерфейсе я вижу рамку в своем компоненте.
К сожалению, чтобы создать какой-то поток, мне нужно вызывать backend как минимум 10 раз в секунду, чтобы получить 10fps. Это тяжелый бэкэнд.
Я читал о StreamingHttpResponse, но не знаю, подходит ли он моим потребностям.