这个项目能做什么

VidGear(vidgear)是一个 Python 框架,通过一组称为“Gears”的专用 API 简化复杂的实时视频处理任务。它在 OpenCV、FFmpeg、ZeroMQ、picamera2、starlette、yt-dlp、dxcam、aiortc 和 python-mss 等库之上提供了一个高层、多线程且兼容 asyncio 的抽象层,在暴露这些库参数的同时,内部处理错误和同步。 该框架将功能组织为四组: **视频采集 Gears** - CamGear:从 IP/USB 摄像头、网络流(RTSP、RTMP、HTTP)、多媒体文件、GStreamer 管道以及流媒体网站(YouTube、Twitch 等,通过 yt-dlp)读取视频。使用线程队列实现低延迟帧传递。 - FFGear:硬件加速的 FFmpeg 解码器封装(CUDA/CUVID 等),支持完整的滤镜图、逐帧元数据提取,以及仅关键帧处理以优化 AI 推理。 - PiGear:针对树莓派摄像头模块(OV5647、IMX219)通过 picamera2/libcamera 进行优化,并带有回退到旧版 picamera 的机制,以及用于硬件故障的线程看门狗。 - ScreenGear:使用 dxcam、pyscreenshot 或 mss 后端进行高速屏幕捕获,支持多显示器区域。 - VideoGear:统一的采集 API,可以在 CamGear、PiGear 和 FFGear 后端之间切换;包含集成视频稳定器,用于实时减少抖动。 **视频写入 Gear** - WriteGear:基于 FFmpeg 的编码器,用于无损或压缩输出,支持任意编解码器、比特率、分辨率、字幕和音频复用。还提供 OpenCV VideoWriter 非压缩模式。支持向 RTMP/RTSP 端点进行直播推流。 **流媒体 Gears** - StreamGear:将输入转码为自适应流媒体格式(MPEG-DASH、Apple HLS),并生成分片和清单文件。 - WebGear:ASGI 服务器,向浏览器广播实时 MJPEG 帧。 - WebGear_RTC:基于 asyncio 的 WebRTC 媒体服务器,用于低延迟点对点流媒体传输。 **网络 Gears** - NetGear:基于 ZeroMQ,在系统之间通过网络进行高性能帧和数据传输。 - NetGear_Async:NetGear 的内存高效 asyncio 版本。 所有 Gears 共享一致的启动/读取/停止模式、完善的日志记录和详细的文档。该项目采用 Apache 2.0 许可证。