Поток видео и аудио из файлов на 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())