Об этом проекте
VidGear (vidgear) — фреймворк на Python, упрощающий сложные задачи обработки видео в реальном времени с помощью набора специализированных API, называемых «Gears». Он предоставляет высокоуровневый многопоточный слой, совместимый с asyncio, поверх таких библиотек, как OpenCV, FFmpeg, ZeroMQ, picamera2, starlette, yt-dlp, dxcam, aiortc и python-mss, раскрывая их параметры и беря на себя внутреннюю обработку ошибок и синхронизацию.
Функциональность фреймворка разделена на четыре группы:
**Video-Capture Gears (захват видео)**
- CamGear: чтение с IP/USB-камер, сетевых потоков (RTSP, RTMP, HTTP), мультимедийных файлов, конвейеров GStreamer и стриминговых сайтов (YouTube, Twitch и др.) через yt-dlp. Использует потоковую очередь для доставки кадров с низкой задержкой.
- FFGear: обёртка аппаратно-ускоренного декодера FFmpeg (CUDA/CUVID и др.) с полной поддержкой filtergraph, извлечением метаданных каждого кадра и обработкой только ключевых кадров для оптимизации инференса ИИ.
- PiGear: оптимизирован для модулей камер Raspberry Pi (OV5647, IMX219) через picamera2/libcamera, с откатом на устаревший picamera и потоковым watchdog для аппаратных сбоев.
- ScreenGear: высокоскоростной захват экрана с использованием бэкендов dxcam, pyscreenshot или mss, с поддержкой областей на нескольких мониторах.
- VideoGear: унифицированный API захвата, позволяющий переключаться между бэкендами CamGear, PiGear и FFGear; включает встроенный стабилизатор видео для устранения дрожания в реальном времени.
**Video-Writer Gear (запись видео)**
- WriteGear: кодировщик на базе FFmpeg для вывода без потерь или со сжатием с произвольным кодеком, битрейтом, разрешением, субтитрами и мультиплексированием звука. Также предлагает режим без сжатия на основе OpenCV VideoWriter. Поддерживает прямую трансляцию на RTMP/RTSP-эндпоинты.
**Streaming Gears (потоковая передача)**
- StreamGear: транскодирует входные данные в форматы адаптивной потоковой передачи (MPEG-DASH, Apple HLS) с нарезкой на чанки и генерацией манифестов.
- WebGear: ASGI-сервер, транслирующий живые MJPEG-кадры в браузеры.
- WebGear_RTC: асинхронный (asyncio) медиа-сервер WebRTC для низколатентной одноранговой потоковой передачи.
**Network Gears (сетевые)**
- NetGear: высокопроизводительная передача кадров и данных между системами по сети (на основе ZeroMQ).
- NetGear_Async: экономичная по памяти asyncio-версия NetGear.
Все Gears используют единый шаблон start/read/stop, подробное логирование и детальную документацию. Проект распространяется по лицензии Apache 2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.