В потоковом видео с помощью Python, Flask, не получается воспроизвести видео из массива одно за другим

Разрабатываю приложение на python, котрое транслирует поток в сеть, воспроизвожу через vlc. Для вещания в сеть перепробывал много способов, как свои самописные так и готовый код. Остановился на Flaske. Проблема в том что код для воспроизведения воспроизводит лишь одно видео, после прерывается. Хочу сделать перебор путе к файлам и их вещание одно за другим. Вот код

arr = ["1.mp4", "2.mp4"]


app = Flask(__name__)
@app.after_request
def after_request(response):
    response.headers.add('Accept-Ranges', 'bytes')
    return response



def get_chunk(path, byte1=None, byte2=None):
    for path in arr:
        print(path)
        full_path = path
        file_size = os.stat(full_path).st_size
        start = 0
        
        if byte1 < file_size:
            start = byte1
        if byte2:
            length = byte2 + 1 - byte1
        else:
            length = file_size - start

        with open(full_path, 'rb') as f:
            print(full_path)
            f.seek(start)
            chunk = f.read(length)
        return chunk, start, length, file_size


@app.route('/video')
def get_file():
    range_header = request.headers.get('Range', None)
    byte1, byte2 = 0, None
    if range_header:
        match = re.search(r'(\d+)-(\d*)', range_header)
        groups = match.groups()

        if groups[0]:
            byte1 = int(groups[0])
        if groups[1]:
            byte2 = int(groups[1])
       
    chunk, start, length, file_size = get_chunk(byte1, byte2)
    resp = Response(chunk, 206, mimetype='video/mp4',
                      content_type='video/mp4', direct_passthrough=True)
    resp.headers.add('Content-Range', 'bytes {0}-{1}/{2}'.format(start, start + length - 1, file_size))
    return resp

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

Понимаю, что перебор не будет идти так как в функции есть return, что приводит к выходу из цикла. Пробовал yield, но flask ругается, что не принимает генератор. Подскажите, как сделать правильно, если кто сталкивался с таким, или стоит даже переписать код


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