这个项目能做什么
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 许可证。
评论
0 评分人数达到10人后显示
登录后参与讨论。