Об этом проекте
Установите библиотеку командой 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, и преобразовывать обратно. Значения интерфейса можно передавать в колбэки через замыкания, но данные, создаваемые внутри колбэков, нужно передавать осторожно, так как колбэки выполняются в форкнутых потоках. Документация рекомендует потокобезопасные контейнеры, такие как блокировки или очереди, а также цикл опроса в основном скрипте Streamlit. Вызовы st.* из Streamlit не работают внутри колбэков, а общее состояние необходимо синхронизировать.
Компонент может показывать элементы управления камерой и микрофоном, отключающие треки без остановки или пересогласования WebRTC; отключенное видео отправляет черные кадры, а отключенный звук — тишину. on_video_ended и on_audio_ended предоставляют хуки для очистки при остановке треков, закрытии страницы или разрыве соединения. Фабричные хелперы для исходных и целевых треков кэшируют объекты в st.session_state и поддерживают жизненный цикл сессии WebRTC или Streamlit. Функциональные колбэки являются рекомендуемым API, а старые классовые процессоры пока поддерживаются, но запланированы к удалению в одном из будущих мажорных релизов.
При удаленном развертывании доступ к медиа браузера требует HTTPS, кроме localhost. Для работы WebRTC также требуется настройка STUN через rtc_configuration, а TURN может понадобиться в ограниченных сетях или прокси. README описывает возможности Cloudflare Realtime TURN, Twilio, Open Relay и самостоятельный хостинг TURN, а также упоминает streamlit-remote как помощник для HTTPS или туннельной разработки. Логирование использует стандартный модуль logging Python. Примеры проектов охватывают обнаружение объектов, фильтры OpenCV, обработку аудио, однонаправленное видео, распознавание речи в реальном времени, перенос стиля, оценку позы MediaPipe и видеозвонки. API описывается как незавершенный до версии v1.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.