[파이썬] Flask에서의 비디오 스트리밍

비디오 스트리밍은 현대 웹 애플리케이션에서 매우 인기있는 기능 중 하나입니다. Flask는 Python 웹 프레임워크로서, 이러한 비디오 스트리밍 기능을 구현하는 데 사용될 수 있습니다. 이 기사에서는 Flask를 사용하여 비디오 스트리밍을 구현하는 방법에 대해 알아보겠습니다.

필요한 패키지 설치

비디오 스트리밍을 구현하려면 먼저 필요한 패키지를 설치해야합니다. Flask, OpenCV 및 numpy 패키지를 설치하는 것이 일반적입니다. 다음과 같은 명령을 사용하여 설치할 수 있습니다.

pip install flask opencv-python numpy

비디오 스트리밍 앱 생성

Flask 애플리케이션을 시작하기 위해 먼저 app.py라는 새로운 파일을 생성하고 다음과 같은 코드를 작성합니다.

from flask import Flask, render_template, Response
import cv2

app = Flask(__name__)

def generate_frames():
    # 비디오 스트리밍을 시작하는 코드
    cap = cv2.VideoCapture(0)

    while True:
        # 비디오의 프레임을 읽어오는 코드
        ret, frame = cap.read()

        if not ret:
            break

        # 프레임을 스트리밍하기 위해 바이트로 변환하는 코드
        ret, buffer = cv2.imencode('.jpg', frame)
        frame = buffer.tobytes()
        
        # 스트리밍된 프레임을 반환하는 코드
        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

@app.route('/')
def index():
    return render_template('index.html')

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

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

HTML 템플릿 생성

templates라는 새로운 디렉토리를 생성하고 index.html이라는 새로운 파일을 만듭니다. 그리고 다음과 같은 코드를 작성합니다.


<!DOCTYPE html>
<html>
  <head>
    <title>비디오 스트리밍</title>
  </head>
  <body>
    <h1>비디오 스트리밍</h1>
    <img src="{{ url_for('video_feed') }}" width="640" height="480">
  </body>
</html>

앱 실행

이제 앱을 실행해 보겠습니다. 터미널 또는 명령 프롬프트에서 app.py가 있는 디렉토리로 이동한 다음 다음 명령을 실행합니다.

python app.py

앱이 실행되면 http://127.0.0.1:5000에서 비디오 스트리밍을 확인할 수 있습니다.

결론

이 글에서는 Flask를 사용하여 Python에서 비디오 스트리밍을 구현하는 방법을 알아보았습니다. Flask는 간단하면서도 강력한 웹 프레임워크로, 비디오 스트리밍과 같은 기능을 쉽게 구현할 수 있습니다. Flask와 OpenCV를 사용하여 웹 애플리케이션에 비디오 스트리밍 기능을 추가해 보세요.