2016-07-03 3 views
0

В Flask я хотел бы остановить потоковое видео, чтобы выполнить другую задачу (перенаправить на главную страницу). Но вместо этого, когда потоковая передача останавливается, экран зависает до последнего кадра.Как остановить потоковый ответ с помощью фляжки

Мой код:

def gen_temporary(cam): 
    counter_frames=0  
    while counter_frames<100: 
     frame = cam.get_frame() 
     counter_frames+=1 
     yield (b'--frame\r\n' 
      b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n') 
    yield redirect('/mainPage') 

@app.route('/video_capture') def video_capture(): return Response(gen_temporary(VideoCamera()), mimetype='multipart/x-mixed-replace; boundary=frame')

ответ

0

Вы не можете послать заголовок, такие как заголовок HTTP Location после того, как вы послали содержание. Кроме того, даже если бы вы могли, если этот ответ является видеопотоком, он, вероятно, будет потребляться элементом <video> или аналогичным, а перенаправление будет перенаправлять только запрос на видео, и пользователь останется на той же странице.

Если вы хотите перенаправить пользователя в другое место, как только видео будет воспроизводиться, вам нужно будет сделать это через JavaScript, прослушив соответствующее событие и затем изменив URL.

+0

спасибо, но каково соответствующее событие? – Mostafa

+0

@Mostafa: Это довольно быстрый ответ. Вы даже посмотрели документацию? https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events 'end' выглядит многообещающим –

+0

, это не сработало, потому что я потоковый покадровый не с видео. Я закончил использовать http://stackoverflow.com/questions/8824141/how-to-redirect-from-one-url-to-another-url – Mostafa

Смежные вопросы