Невозможно отправить видео с веб-камеры в файл шаблона (. html) с помощью StreamingHttpResponse в Django 2.2. - PullRequest
0 голосов
/ 28 апреля 2020

Я недавно запустил django и хотел посмотреть видео с камеры ноутбука в веб-приложение на Django 2.2. Я успешно просмотрел видео с камеры, напрямую отправив ответ в Интернет с помощью функции display_livefeed. Ниже приведен мой код views.py приложения 'camerafeed'

class mycamera(object):

    def __init__(self):
        self.frames = cv2.VideoCapture(0)

    def __del__(self):
        self.frames.release()

    def get_jpg_frame(self):
        is_captured, frame = self.frames.read()
        retval, jframe = cv2.imencode('.jpg', frame)
        return jframe.tobytes()

def livefeed():
    camera_object = mycamera()
    while True:
        jframe_bytes = camera_object.get_jpg_frame()
         yield (b'--frame\r\n'
                b'Content-Type: image/jpeg\r\n\r\n' + jframe_bytes + b'\r\n\r\n')


@condition(etag_func=None)
def display_livefeed(self):
     return  StreamingHttpResponse(
            livefeed(),
            content_type='multipart/x-mixed-replace; boundary=frame'
        )

Я использовал путь ('monitor /', display_livefeed, name = 'monitor'), для просмотра видео потоковая передача на http://127.0.0.1: 8000 / монитор / и она отлично работает >> Изображение из потокового видео << </a>

Теперь я хотел отобразить на html шаблон просто строка, это делается здесь: https://www.pyimagesearch.com/2019/09/02/opencv-stream-video-to-web-browser-html-page/ но это было сделано с помощью Flask. Но я хотел сделать то же самое, используя Django, и застрял. Вот файл html по вышеуказанной ссылке.

<html>
   <head>
      <title>Pi Video Surveillance</title>
   </head>
   <body>
      <h1>Pi Video Surveillance</h1>
      <img src="{{ url_for('video_feed') }}">
   </body>

Я попытался сделать это, используя эту функцию:

def video_feed(request):
    return  StreamingHttpResponse(
            livefeed(), # Calling livefeed() function
            content_type='multipart/x-mixed-replace; boundary=frame'
    )

Но он может видеть видео на html страница с использованием пути ('', homePageView.as_view (), name = 'home'), и размещения кода ниже в views.py

class homePageView(TemplateView):
      template_name = 'home.html'

Я видел и пробовал следующее:

  1. Django StreamingHttpОтвет на шаблон
  2. Opencv Live Stream с камеры в Django Веб-страница

Но может быть из-за того, что я новичок во всех этих вещах, включая веб-разработку, я не смог бы это сделать. Пожалуйста, помогите объяснить мне, как это сделать.

Я использую python 3.7 и django 2.2

...