Поток видео и аудио из файлов на Python, flask

Разрабатываю консольное приложение, которое поочередно транслирует видео в формате mp4, которые лежат в локальной директории. Создается видеопоток, транслируется в сеть, при помощи flask, а точнее Response. Протокол HTTP. Позже нужно было кроме видео транслировать и аудио также из файла, формат .wav.

Хотел реализовать таким образом, чтобы по одному роуту app.route('/video_feed') - транслировались в рандомном порядке видео и аудио, условно одними потоком.

Принимается поток в VLC.

Реализовал проверку в отдельной функции, где в зависимости от типа файла, то есть расширения запускались разные функции, когда mp4 то для видео, wav для аудио.

Но столкнулся с проблемой, что после видео не запускается аудио, и наоборот после аудио не запускается видео. По консоле методом простых принтов отследил, что скрипт отправляет поток аудио после видео, но в какой-то момент просто прерывается.

Если кто-то сталкивался или есть мысли по этому поводу, подскажите.

def pere():
    for x in main.full_akt_table:                       #перебор массива с видео
        path = main.path_video + x
        full_name = os.path.basename(path)
        name = os.path.splitext(full_name)[1]

        if name == '.wav':                           #проверка расширения

            with open(path, "rb") as fwav:            #для аудио
                data = fwav.read(1024)
                while data:
                    yield data

        else: 
            camera = cv2.VideoCapture(path)          #для видео
            fps = camera.get(5)
            while True:
                cv2.waitKey(int(600 / int(fps)))
                success, frame = camera.read()
                if not success:
                    break
                else:
                    ret, buffer = cv2.imencode('.jpg', frame)

                    frame = buffer.tobytes()
                    
                    yield (b'--frame\r\n'
                        b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
@app.route('/video_feed')                     # роут
def video_feed():
    while True:                   #цикл запуска, возвращает response
        return Response(pere())

Ответы (0 шт):