videowriter로 저장중인 비디오를 html에서 가져오는 방법
조회수 703회
현재 두개의 쓰레드를 이용해서 하나는 웹캠의 비디오를 파일로 저장하는 쓰레드를, 하나는 이 저장중인 파일을 html 로 넘겨서 html로 웹에서 보여주는 기능을 하고 있습니다. 제가 웹에 대해 잘 모르는데, flask로 render_template로 저장중인 비디오 변수값을 넘겨서 html에서 로 해당 변수를 url_for 를 사용하여 받아 출력해주고 싶습니다. 하지만 동영상이 출력되지가 않네요.
비디오를 저장하는 파이썬 코드입니다.
fourcc = VideoWriter_fourcc(*'H264')
out = VideoWriter('/content/drive/My Drive/Colab Notebooks/MRCNN_pure/static/image/output.mp4', fourcc, 13.0, (1280, 720))
_lock = threading.Lock()
def webcam(capture):
while True:
frame_pos = capture.get(cv2.CAP_PROP_POS_FRAMES)
frame_count = capture.get(cv2.CAP_PROP_FRAME_COUNT)
grabbed, frame = capture.read()
if not grabbed:
print ("Not grabbed.")
break;
if grabbed:
_lock.acquire()
out.write(frame)
_lock.release()
다음은 이를 render_template로 넘겨주는 flask 실행 코드입니다.
app = Flask(__name__)
run_with_ngrok(app)
@app.route("/")
def home()-> 'html':
return render_template('test.html', output = "image/output.mp4")
if __name__ == "__main__":
app.run()
다음은 html파일입니다.
<body>
<h1>HTML5 오픈 커뮤니티</h1>
<p>이 자료는 <a href="http://www.htmlfive.co.kr">HTML5 오픈 커뮤니티</a>에서 배포합니다.</p>
{% if True %}
<video controls autoplay preload="metadata" width="50%" src="{{ url_for('static',filename=output) }}" type='video/mp4'>
not working
</video>
<img src="{{url_for('static', filename=output)}}">
{% endif %}
</body>
다른 완전한 동영상 파일을 넘겨 웹으로 출력해주는건 되는데 저장중인 비디오를 출력해주는 것은 되지 않네요. 좋은 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
말씀하시는 건 스트리밍입니다. 트위치 같은 게 그런 서비스죠. 입력된 영상 소스를 정적 파일로 인코딩 저장하지 않고, 들어오는 입력 그대로 최소한의 변환만 해서 바로 버퍼로 출력 전송하는 것입니다. 적당한 라이브러리를 찾아서 그걸 써보세요.
댓글 입력