À propos du projet
Installez avec pip install -U streamlit-webrtc. Une application de base appelle webrtc_streamer(key="sample"), où key est un identifiant unique requis. Les utilisateurs appuient sur DÉMARRER et accordent les autorisations de caméra ou de microphone pour commencer une session.
L'API de traitement principale utilise video_frame_callback et audio_frame_callback. Les rappels reçoivent des objets PyAV av.VideoFrame ou av.AudioFrame et doivent renvoyer le même type de trame. Les trames peuvent être converties en tableaux NumPy, traitées avec des bibliothèques telles qu'OpenCV, puis reconverties. Les valeurs de l'interface utilisateur peuvent être transmises aux rappels via des fermetures, tandis que les données produites dans les rappels doivent être partagées avec précaution car les rappels s'exécutent dans des threads forkés. La documentation recommande des conteneurs thread-safe tels que des verrous ou des files d'attente, ainsi qu'une boucle de sondage dans le script Streamlit principal. Les appels Streamlit st.* ne fonctionnent pas dans les rappels, et l'état partagé doit être synchronisé.
Le composant peut afficher des commandes de bascule de caméra et de microphone qui désactivent les pistes sans arrêter ni renégocier WebRTC ; la vidéo désactivée envoie des trames noires et l'audio désactivé envoie du silence. on_video_ended et on_audio_ended fournissent des hooks de nettoyage lorsque les pistes s'arrêtent, la page se ferme ou la connexion tombe. Les fabriques d'assistance pour les pistes source et puits mettent en cache les objets dans st.session_state et prennent en charge la portée du cycle de vie de session WebRTC ou Streamlit. Les rappels basés sur des fonctions sont l'API recommandée, tandis que les processeurs plus anciens basés sur des classes restent pris en charge mais sont prévus pour suppression dans une future version majeure.
Pour un déploiement à distance, l'accès multimédia du navigateur nécessite HTTPS sauf sur localhost. La connectivité WebRTC nécessite également une configuration STUN via rtc_configuration, et TURN peut être nécessaire derrière des réseaux ou proxys restrictifs. Le README documente Cloudflare Realtime TURN, Twilio, Open Relay et les options TURN auto-hébergées, et mentionne streamlit-remote comme aide pour le développement HTTPS ou tunnelisé. La journalisation utilise le module de journalisation standard de Python. Les exemples du projet couvrent la détection d'objets, les filtres OpenCV, le traitement audio, la vidéo unidirectionnelle, la reconnaissance vocale en temps réel, le transfert de style, l'estimation de pose MediaPipe et la visioconférence. L'API est décrite comme non finalisée avant la v1.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.