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 要件下での接続を保証します。