这个项目能做什么

使用 pip install -U streamlit-webrtc 安装。基础应用调用 webrtc_streamer(key="sample"),其中 key 是必需的唯一标识符。用户按下 START 并授予摄像头或麦克风权限即可开始会话。 主要处理 API 使用 video_frame_callback 和 audio_frame_callback。回调接收 PyAV 的 av.VideoFrame 或 av.AudioFrame 对象,并必须返回相同帧类型。帧可转换为 NumPy 数组,使用 OpenCV 等库处理,再转换回来。UI 值可通过闭包传入回调,而回调内部产生的数据需谨慎共享,因为回调在分叉线程中执行。文档推荐使用线程安全容器(如锁或队列),并在主 Streamlit 脚本中设置轮询循环。Streamlit 的 st.* 调用不能在回调内部使用,共享状态必须同步。 该组件可显示摄像头和麦克风切换控件,在不停止或重新协商 WebRTC 的情况下禁用轨道;禁用视频时发送黑帧,禁用音频时发送静音。on_video_ended 和 on_audio_ended 提供轨道停止、页面关闭或连接断开时的清理钩子。源和汇轨道的工厂辅助函数在 st.session_state 中缓存对象,并支持 WebRTC 会话或 Streamlit 会话生命周期范围。基于函数的回调是推荐 API,而旧的基于类的处理器仍受支持,但计划在未来的主要版本中移除。 对于远程部署,浏览器媒体访问需要 HTTPS(本地主机除外)。WebRTC 连接还需要通过 rtc_configuration 配置 STUN,在受限网络或代理后可能需要 TURN。README 文档记录了 Cloudflare Realtime TURN、Twilio、Open Relay 和自托管 TURN 选项,并提到 streamlit-remote 作为 HTTPS 或隧道开发的辅助工具。日志记录使用 Python 的标准 logging 模块。项目示例涵盖目标检测、OpenCV 滤镜、音频处理、单向视频、实时语音转文字、风格迁移、MediaPipe 姿态估计和视频聊天。API 在 v1.0 之前被描述为未最终确定。