2016-07-03 1 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 위치 헤더로 헤더를 보낼 수 없습니다. 또한 가능하다하더라도이 응답이 비디오 스트림 인 경우 <video> 요소 또는 이와 유사한 것으로 소비 될 수 있으며 리디렉션은 동영상 요청 만 리디렉션하므로 사용자는 같은 페이지에 머물러있게됩니다.

동영상 재생이 끝난 후 사용자를 다른 곳으로 리디렉션하려면 관련 이벤트를 수신 한 다음 URL을 변경하여 JavaScript를 통해 재생해야합니다.

+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