프로젝트 소개

VidGear(vidgear)는 'Gears'라는 특수 API 모음으로 복잡한 실시간 비디오 처리 작업을 단순화하는 Python 프레임워크입니다. OpenCV, FFmpeg, ZeroMQ, picamera2, starlette, yt-dlp, dxcam, aiortc, python-mss와 같은 라이브러리 위에 고수준의 멀티스레드 및 asyncio 호환 계층을 제공하며, 내부적으로 오류 처리와 동기화를 관리하면서 해당 매개변수를 노출합니다. 프레임워크는 기능을 네 그룹으로 구성합니다: **비디오 캡처 Gears** - CamGear: IP/USB 카메라, 네트워크 스트림(RTSP, RTMP, HTTP), 멀티미디어 파일, GStreamer 파이프라인 및 yt-dlp를 통한 스트리밍 사이트(YouTube, Twitch 등)에서 읽습니다. 저지연 프레임 전달을 위해 스레드 큐를 사용합니다. - FFGear: 하드웨어 가속 FFmpeg 디코더 래퍼(CUDA/CUVID 등)로 전체 필터그래프 지원, 프레임별 메타데이터 추출 및 AI 추론 최적화를 위한 키프레임 전용 처리를 제공합니다. - PiGear: picamera2/libcamera를 통해 Raspberry Pi 카메라 모듈(OV5647, IMX219)에 최적화되어 있으며, 레거시 picamera로 폴백하고 하드웨어 오류를 위한 스레드 워치독을 포함합니다. - ScreenGear: dxcam, pyscreenshot 또는 mss 백엔드를 사용한 고속 화면 캡처로 다중 모니터 영역을 지원합니다. - VideoGear: CamGear, PiGear 및 FFGear 백엔드 간에 전환할 수 있는 통합 캡처 API로, 실시간 흔들림 감소를 위한 통합 비디오 안정화 기능을 포함합니다. **비디오 라이터 Gear** - WriteGear: 임의의 코덱, 비트레이트, 해상도, 자막 및 오디오 멀티플렉싱으로 무손실/압축 출력을 위한 FFmpeg 기반 인코더입니다. OpenCV VideoWriter 비압축 모드도 제공하며 RTMP/RTSP 엔드포인트로의 라이브 스트리밍을 지원합니다. **스트리밍 Gears** - StreamGear: 입력을 적응형 스트리밍 형식(MPEG-DASH, Apple HLS)으로 트랜스코딩하고 청킹 및 매니페스트 생성을 제공합니다. - WebGear: 브라우저에 라이브 MJPEG 프레임을 브로드캐스트하는 ASGI 서버입니다. - WebGear_RTC: 저지연 피어투피어 스트리밍을 위한 asyncio WebRTC 미디어 서버입니다. **네트워크 Gears** - NetGear: 네트워크를 통한 고성능 프레임 및 데이터 전송(ZeroMQ 기반)을 제공합니다. - NetGear_Async: NetGear의 메모리 효율적인 asyncio 버전입니다. 모든 Gears는 일관된 시작/읽기/중지 패턴, 광범위한 로깅 및 상세한 문서를 공유합니다. 이 프로젝트는 Apache 2.0 라이선스로 배포됩니다.