whitphx/streamlit-webrtc

Real-time video and audio processing on Streamlit

해결하는 문제

Streamlit 앱은 프레임워크의 실행 모델 때문에 실시간 오디오·비디오 스트리밍에 어려움을 겪습니다. streamlit-webrtc는 네트워크를 통해 실시간 미디어 스트림을 처리·전송하는 방법을 제공하여 복잡한 WebRTC 시그널링 및 전송 로직을 직접 작성하지 않아도 인터랙티브한 미디어 애플리케이션을 구축할 수 있게 합니다.

작동 원리

WebRTC를 Streamlit에 통합하기 위해 webrtc_streamer 컴포넌트를 제공합니다. 이 컴포넌트를 사용하면 개발자는 비디오·오디오 프레임용 콜백 함수를 정의해 실시간으로 미디어를 처리할 수 있습니다. 콜백은 별도 스레드에서 실행되어 스트림이 부드럽게 유지되며, PyAV 라이브러리를 이용해 프레임을 av.VideoFrame 또는 av.AudioFrame 객체로 다룹니다.

대상 사용자

실시간 비디오 또는 오디오 처리 기능(예: 객체 탐지, 음성‑텍스트 변환, 비디오 채팅)을 갖춘 앱을 Streamlit으로 만들고자 하는 Python 개발자에게 적합합니다.

주요 특징

  • 실시간 처리: 비디오·오디오 프레임 콜백을 지원해 즉시 조작이 가능합니다.
  • 유연한 통합: 프레임을 NumPy 배열로 변환해 OpenCV 등 이미지 처리 라이브러리와 연동할 수 있습니다.
  • 세션 관리: on_video_ended, on_audio_ended와 같은 훅을 제공해 세션 종료 시 리소스를 정리합니다.
  • 배포 준비: STUN/TURN 서버 설정 가이드와 옵션을 제공해 다양한 네트워크 환경 및 HTTPS 요구 사항에서도 연결을 보장합니다.