Об этом проекте

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.