VideoPipe is a cross-platform C++ framework for video analysis and structuring using modular plugins and multiple backends; it supports OpenCV, GStreamer, and optional backends like CUDA, TensorRT, Paddle, ONNX Runtime, and mLLM. Latest release is v0.1 (2024-04-28).
Collecting history — the radar snapshots this repo daily. The trend line appears after 3 days of data (1 so far).
What it is
VideoPipe is a framework for video analysis and structuring, written in C++. It operates as a pipeline where each node (plugin) is independent and can be combined to build video analysis applications such as video structuring, image search, face recognition, and behavior analysis in traffic/security contexts. It supports multiple backends for inference and includes features like stream reading, video decoding, object tracking, behavior analysis, data proxying, recording, on-screen display, video encoding, and stream pushing.
How it works
VideoPipe uses a plugin-oriented design with independent Node types that can be linked to form pipelines. Inference backends can be OpenCV::DNN (default), TensorRT, PaddleInference, ONNXRuntime, or others. It provides features such as Stream Reading, Video Decoding (OpenCV/GStreamer with hardware acceleration), multi-level inference (object detection, classification, feature extraction, image generation), Object Tracking (IOU, SORT), Behavior Analysis based on tracking, Data Proxy, Recording, OSD, Video Encoding, and Stream Pushing. It also supports integrating custom business logic and structured data outputs (JSON/XML).
Getting started
Dependencies include platforms like Ubuntu variants with NVIDIA GPUs or CPUs, C++17, OpenCV >= 4.6, GStreamer 1.14.5, and GCC >= 7.5. Optional backends for CUDA, TensorRT, Paddle Inference, ONNX Runtime, and mLLM. Installation steps (from README):
- run
git clone https://github.com/sherlockchou86/VideoPipe.git - run
cd VideoPipe - run
mkdir build && cd build - run
cmake .. - run
make -j8
During CMake, you can enable features with options such as -DVP_WITH_CUDA=ON, -DVP_WITH_TRT=ON, -DVP_WITH_PADDLE=ON, -DVP_WITH_KAFKA=ON, -DVP_WITH_LLM=ON, and -DVP_BUILD_COMPLEX_SAMPLES=ON. Example: cmake -DVP_WITH_CUDA=ON -DVP_WITH_TRT=ON ...
To run samples, download models and data from provided links and run the sample binary located in build/bin (e.g., [path to VideoPipe]/build/bin/1-1-1_sample). Place vp_data in a location and execute the sample in that directory.
Code sample demonstrating a pipeline is provided, showing how to assemble nodes (file source, face detector, face encoder, OSD, display, and RTMP stream) and start the pipeline. The README includes a detailed sample code block showing how to construct and run a pipeline with specific node types and model paths.
Getting started quick references
- Example compile/run commands are shown above.
- The README includes a sample usage snippet and a code example demonstrating a 1-video-input, 1-analysis-task pipeline with 2 outputs (screen display and RTMP stream).
Recent releases
- v0.1 (2024-04-28): the first stable version for VideoPipe.
Traction
- 2888 stars
- 452 forks
- 4 open issues
Behind the repo
- Repository owner: sherlockchou86
- Language: C++
- License: Apache-2.0
- Created: 2022-08-26
- Last push: 2026-02-25
Caveats
- License: Apache-2.0
- Age and activity see last push date: 2026-02-25. No additional license or open issues details are provided beyond the 4 open issues listed.






