Потоковое несколько видео с Flask? - PullRequest
0 голосов
/ 20 февраля 2020

Для потоковой передачи видео с flask, по этой ссылке и по этой ссылке оба предлагают потоковую передачу с generator. Ниже приведен мой рабочий пример для потоковой передачи одного видео. Но мой вопрос: как передавать несколько видео одновременно?

Моя структура папок выглядит следующим образом:

root_folder/
    templates/
        index.html
    server.py
    video1.mp4
    video2.mp4

server.py

Camera класс читает видеофайл и конвертирует в формат .jpeg. Маршрут '/video_feed/<index>' указывает на канал с назначенным index.

import cv2
from flask import Flask, render_template, Response

app = Flask(__name__)


class Camera:
    def __init__(self, index):
        self.path = f'video{index}.mp4'
        self.cap = cv2.VideoCapture(self.path)

    def get_frame(self):
        while 1:
            success, image = self.cap.read()
            # to replay video infinitely
            if not success:
                print('replay')
                self.cap = cv2.VideoCapture(self.path)
                success, image = self.cap.read()

            _, encoded = cv2.imencode(".jpg", image)

            yield(b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' +
                  bytearray(encoded) + b'\r\n')


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/video_feed/<index>')
def video_feed(index):
    return Response(Camera(index).get_frame(),
                    mimetype='multipart/x-mixed-replace; boundary=frame')


if __name__ == '__main__':
    app.run(debug=True)

index. html

<img src="{{ url_for('video_feed', index='1') }}">
<!--<img src="{{ url_for('video_feed', index='2') }}">-->

Это прекрасно работает, когда запрашивается только один тег img для подачи видео. Но как я могу транслировать несколько видео одновременно? Когда я раскомментировал другой тег img, интерфейс завис. Потоки не воспроизводились, а загрузка процессора взлетела до небес.

Я думаю, что полностью испортил. Что происходит с моим кодом?

В обычных python программах (не с flask) я бы имел дело с несколькими видео с многопроцессорностью или многопоточностью. Тем не менее, я путаюсь с концепциями потоков в flask и не могу понять, как реализовать.

Любое предложение приветствуется. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...