2016-07-03 18 views
0

フラスコでは、別のタスク(メインページにリダイレクト)を実行するためにビデオストリーミングを停止したいと思います。 代わりに、ストリーミングが停止すると、画面は最後のフレームにフリーズします。フラスコでストリーミングレスポンスを停止する方法

私のコードは次のとおりです。

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

@モスタファ:これはかなり簡単な返事です。あなたはドキュメントを見ましたか? https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events 'ended'は有望に見える –

+0

私はビデオではなくフレームごとにストリーミングしているので、動作しませんでした。私はhttp://stackoverflow.com/questions/8824141/how-to-redirect-from-one-url-to-another-urlを使用して終了しました – Mostafa

関連する問題