GitRead 中文社区
首页趋势排行榜原创文章严选周刊
更多资源
新手训练营
精选专题热门话题GitHub 文档资源精选实战指南

VideoPipe

跨平台视频结构化(视频分析)框架。如果您觉得有帮助,请给它一颗星:)平台的视频结构化(视频分析)框架,既然有帮助的请给个星:)

  • 语言C++
  • 默认分支master
  • 大小165.7 MB
  • 更新2月25日
  • Issues1
在 GitHub 打开
avatarsherlockchou86

项目介绍

sherlockchou86/VideoPipe 是一个托管在 GitHub 上的开源项目,主要使用 C++ 编写,采用 Apache License 2.0 许可证,目前获得 3.0k 个 Star、472 次 Fork。

仓库全名
sherlockchou86/VideoPipe

README 摘要

中文README | VideoPipe Website | VideoPipe tutorials(视频教程) 🚀one-yolo, make all in one for Yolo integration. All Tasks, All Versions, All Runtimes. 🚀 Introduction VideoPipe is a framework for video analysis and structuring, written in C++. It has minimal dependencies and is easy to use. It operates like a pipeline, where each node is independent and can be combined in various ways. VideoPipe can be used to build…

完整内容见 GitHub 原始 README 或本页 。

常见问题

VideoPipe 用什么语言开发?

主要使用 C++ 编写,采用 Apache License 2.0 许可证,目前有 3.0k 个 Star。

VideoPipe 可以免费商用吗?

仓库采用 Apache License 2.0 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 VideoPipe 的源码?

可以直接克隆仓库:git clone https://github.com/sherlockchou86/VideoPipe.git,默认分支为 master;安装与运行步骤见仓库 README。

VideoPipe 最近还在维护吗?

仓库最近一次更新为 2月25日,当前有 1 个未关闭 Issue;Star 数为 3.0k,可作为社区活跃度的参考。

本页面展示项目元数据与原始 README,GitRead 中文社区 编辑团队负责选题收录。

相关仓库

tensorflow/tensorflow avatar
tensorflowtensorflow
21 分钟前
201.4k
77.8k
3.4k

面向所有人的开源机器学习框架

deep-learningdeep-neural-networksdistributed+5
C++
1.4 GB
0
详情
ggml-org/llama.cpp avatar
llama.cppggml-org
22 分钟前
133.9k
21.3k
722

C/C++ 中的大语言模型推理

ggml
C++
480.7 MB
3
详情
react/react-native avatar
react-nativereact
17 分钟前
126.9k
24.7k
743

使用 React 构建原生应用的框架

androidapp-frameworkcross-platform+5
C++
971.3 MB
0
详情
electron/electron avatar
electronelectron
19 分钟前
123.8k
17.9k
772

使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用

electronjavascriptc-plus-plus+6
C++
228.1 MB
0
详情
godotengine/godot avatar
godotgodotengine
19 小时前
119.9k
26.8k
13.4k

Godot Engine – 多平台 2D 和 3D 游戏引擎

game-developmentgame-enginegamedev+4
C++
1.8 GB
0
详情
microsoft/terminal avatar
terminalmicrosoft
13 小时前
105.4k
9.7k
1.8k

新的 Windows Terminal 和原始的 Windows 控制台主机,全都集中在这里!

cmdcommand-lineconsole+8
C++
177.5 MB
0
详情
opencv/opencv avatar
opencvopencv
1 小时前
91.5k
57.1k
2.9k

开源计算机视觉库

opencvc-plus-pluscomputer-vision+2
C++
558.2 MB
0
详情
bitcoin/bitcoin avatar
bitcoinbitcoin
1 小时前
90.6k
39.5k
778

Bitcoin Core 集成/暂存树

bitcoinc-plus-pluscryptocurrency+2
C++
324.5 MB
0
详情

关于

aibehaviour-analysiscvdeep-learningdeepstreamface-recognitionfeature-extractiongstreamerimage-classificationimage-segmentationlicense-plate-recognitionllmmultimodal-large-language-modelsobject-detectionollamaopenaiopencvreidsimilarity-searchvideo-analysis
  • Apache License 2.0
  • 3.0k Stars
  • 472 Forks
  • 39 Watching

简要分析

热度分
3975
价值分
1940
活跃状态
活跃
GitHub

语言占比

C
C++
CMake
Shell

Release

  • v0.12024年4月28日

贡献者

sherlockchou86sherlockchou86PeterH0323PeterH0323upczwwupczwwBaofengZanBaofengZan521xueweihan521xueweihan

Logo

中文README | VideoPipe Website | VideoPipe tutorials(视频教程)

🚀one-yolo, make all in one for Yolo integration. All Tasks, All Versions, All Runtimes. 🚀


Introduction

VideoPipe is a framework for video analysis and structuring, written in C++. It has minimal dependencies and is easy to use. It operates like a pipeline, where each node is independent and can be combined in various ways. VideoPipe can be used to build different types of video analysis applications, suitable for scenarios such as video structuring, image search, face recognition, and behavior analysis in traffic/security fields (such as traffic incident detection).

Advantages and Features

VideoPipe is similar to NVIDIA’s DeepStream and Huawei’s mxVision frameworks, but it is easier to use and more portable.

Here is a comparison table:

Name Open Source Learning Curve Supported Platforms Performance Third-Party Dependencies
DeepStream No High NVIDIA only High Many
mxVision No High Huawei only High Many
VideoPipe Yes Low Any platform Medium Few

VideoPipe uses a plugin-oriented coding style that allows for flexible configuration based on different needs. We can use independent plugins (referred to as Node types within the framework) to build various types of video analysis applications. You only need to prepare the model and understand how to parse its output. Inference can be implemented using different backends, such as OpenCV::DNN (default), TensorRT, PaddleInference, ONNXRuntime, or any other backend you prefer.

Demonstration

https://github.com/sherlockchou86/video_pipe_c/assets/13251045/b1289faa-e2c7-4d38-871e-879ae36f6d50

To watch in fullscreen, use the button in the bottom right corner of the player,more video demos

Functions

VideoPipe is a framework that simplifies the integration of computer vision algorithm models. It is important to note that it is not a deep learning framework like TensorFlow or TensorRT. The main features of VideoPipe are as follows:

  • Stream Reading: Supports mainstream video stream protocols such as UDP, RTSP, RTMP, file, and application. It also supports image reading.
  • Video Decoding: Supports video and image decoding based on OpenCV/GStreamer (with hardware acceleration).
  • Algorithm Inference: Supports multi-level inference based on deep learning algorithms, such as object detection, image classification, feature extraction, and image generation. It also supports the integration of traditional image algorithms. Support mLLM(Multimodal Large Language Model) integration now (update 2025/8/12)
  • Object Tracking: Supports object tracking, such as IOU and SORT tracking algorithms.
  • Behavior Analysis (BA): Supports behavior analysis based on tracking, such as traffic behavior detection like line-crossing, parking, and violations.
  • Business Logic: Allows integration of any custom business logic, which can be closely related to specific business requirements.
  • Data Proxy: Supports pushing structured data (in JSON, XML, or custom formats) to the cloud, files, or other third-party platforms via methods like Kafka or Socket.
  • Recording: Supports video recording for specific time periods and capturing screenshots of specific frames, with the ability to save them as files.
  • On-Screen Display (OSD): Supports overlaying structured data and business logic processing results onto frames.
  • Video Encoding: Supports video and image encoding based on OpenCV/GStreamer (with hardware acceleration).
  • Stream Pushing: Supports mainstream video stream protocols such as UDP, RTSP, RTMP, file, and application. It also supports image streaming.

Getting Started Quickly

Dependencies

Platforms

  • Ubuntu 18.04 x86_64 NVIDIA rtx/tesla GPUs
  • Ubuntu 18.04 aarch64 NVIDIA jetson serials device,tx2 tested
  • Ubuntu 22.04 x86_64 by VMware virtual machine on Windows 10, pure CPUs
  • Ubuntu 18.04 x86_64 Cambrian MLU serials device, MLU 370 tested (code not provided)
  • Ubuntu 18.04 aarch64 Rockchip RK35** serials device, RK3588 tested (code not provided)
  • Ubuntu 22.04 aarch64 Ascend 310/910 serials device, Atlas 300I-Pro tested (code not provided)
  • Wait for your test

Basics

  • C++ 17
  • OpenCV >= 4.6
  • GStreamer 1.14.5 (Required by OpenCV)
  • GCC >= 7.5

Optional, if you need to implement your own inference backend or use a backend other than opencv::dnn.

  • CUDA
  • TensorRT
  • Paddle Inference
  • ONNX Runtime
  • mLLM(Ollama/vLLM/OpenAI-compatible API Services)
  • Anything you like

how to install CUDA and TensorRT

how to install Paddle_Inference

Compilation and Debugging

  1. run git clone https://github.com/sherlockchou86/VideoPipe.git
  2. run cd VideoPipe
  3. run mkdir build && cd build
  4. run cmake ..
  5. run make -j8

After compilation, all library files are stored in build/libs, and all sample executables are located in build/bin. During Step 4, you can add some compilation options:

  • -DVP_WITH_CUDA=ON (Compile CUDA-related features; default is OFF)
  • -DVP_WITH_TRT=ON (Compile TensorRT-related features and samples; default is OFF)
  • -DVP_WITH_PADDLE=ON (Compile PaddlePaddle-related features and samples; default is OFF)
  • -DVP_WITH_KAFKA=ON (Compile Kafka-related features and samples; default is OFF)
  • -DVP_WITH_LLM=ON (Compile LLM-related features and samples; default is OFF)
  • -DVP_BUILD_COMPLEX_SAMPLES=ON (Compile advanced samples; default is OFF)

For example, to enable CUDA and TensorRT modules, you can run:

cmake -DVP_WITH_CUDA=ON -DVP_WITH_TRT=ON ..

If you run just:

cmake ..

all code will be executed on the CPU.

To run the compiled samples, first download the model files and test data:

  1. Google Drive - Download test files and models
  2. Baidu Drive - Download test files and models

Place the downloaded directory (named vp_data) in any location (e.g., /root/abc). Then, run the sample in the same directory where vp_data is located. For example, execute the command:

[path to VideoPipe]/build/bin/1-1-1_sample

at /root/abc.

Note: The ./third_party/ directory contains independent projects. Some are header-only libraries directly referenced by VideoPipe, while others include CPP files that can be compiled or run independently. VideoPipe depends on these libraries, and they will be automatically compiled during the VideoPipe build process. These libraries also contain their own samples; for specific usage instructions, refer to the README files in the corresponding subdirectories.

How to use

Here’s a guide on how to build and run a sample pipeline with VideoPipe. You can either compile VideoPipe as a library and link it, or directly include the source code and compile the entire application.

Below is a sample code demonstrating how to construct a pipeline and run it. Please make sure to update the file paths in the code accordingly:

#include "../nodes/vp_file_src_node.h"
#include "../nodes/infers/vp_yunet_face_detector_node.h"
#include "../nodes/infers/vp_sface_feature_encoder_node.h"
#include "../nodes/osd/vp_face_osd_node_v2.h"
#include "../nodes/vp_screen_des_node.h"
#include "../nodes/vp_rtmp_des_node.h"
#include "../utils/analysis_board/vp_analysis_board.h"

/*
* Name: 1-1-N Sample
* Complete code located at: samples/1-1-N_sample.cpp
* Functionality: 1 video input, 1 video analysis task (face detection and recognition), 2 outputs (screen display/RTMP stream)
*/

int main() {
    VP_SET_LOG_INCLUDE_CODE_LOCATION(false);
    VP_SET_LOG_INCLUDE_THREAD_ID(false);
    VP_LOGGER_INIT();

    // 1. Create nodes
    // Video Source Node
    auto file_src_0 = std::make_shared<vp_nodes::vp_file_src_node>("file_src_0", 0, "./test_video/10.mp4", 0.6);
    
    // 2. Model Inference Nodes
    // First-level inference: Face detection
    auto yunet_face_detector_0 = std::make_shared<vp_nodes::vp_yunet_face_detector_node>("yunet_face_detector_0", "./models/face/face_detection_yunet_2022mar.onnx");
    // Second-level inference: Face recognition
    auto sface_face_encoder_0 = std::make_shared<vp_nodes::vp_sface_feature_encoder_node>("sface_face_encoder_0", "./models/face/face_recognition_sface_2021dec.onnx");
    
    // 3. OSD Node
    // Draw results on frames
    auto osd_0 = std::make_shared<vp_nodes::vp_face_osd_node_v2>("osd_0");
    
    // Screen Display Node
    auto screen_des_0 = std::make_shared<vp_nodes::vp_screen_des_node>("screen_des_0", 0);
    // RTMP Stream Node
    auto rtmp_des_0 = std::make_shared<vp_nodes::vp_rtmp_des_node>("rtmp_des_0", 0, "rtmp://192.168.77.60/live/10000");

    // Build the pipeline by linking the nodes
    yunet_face_detector_0->attach_to({file_src_0});
    sface_face_encoder_0->attach_to({yunet_face_detector_0});
    osd_0->attach_to({sface_face_encoder_0});

    // Split the pipeline automatically to display results on screen and stream via RTMP
    screen_des_0->attach_to({osd_0});
    rtmp_des_0->attach_to({osd_0});

    // Start the pipeline
    file_src_0->start();

    // Visualize the pipeline
    vp_utils::vp_analysis_board board({file_src_0});
    board.display();
}

Note: Running this code will show three displays:

  1. Pipeline Status: A live update of the pipeline’s status.
  2. Screen Output: The GUI display showing results.
  3. RTMP Output: The streaming output available at the specified RTMP URL.

Prototype Examples

ID Sample Screenshot
1 face_tracking_sample
2 vehicle_tracking_sample
3 mask_rcnn_sample
4 openpose_sample
5 face_swap_sample
6 mllm_analyse_sample

A total of over 40 prototype examples are available. Click here to view more.

Read More

  • Sample Code
  • Node Table
  • How VideoPipe Works
  • Development Environment For Reference

WeChat Discussion Group

Thanks

Featured|HelloGitHub

评论

登录 后发表评论
暂无评论
GitRead 中文社区
深度解读 · 趋势洞察 · 价值精选

关于

关于我们联系我们编辑准则收录标准赞赏人员

发现

技术趋势新手训练营资源精选实战指南精选专题热门话题GitHub 文档

条款

隐私政策服务条款网站地图
26.9万收录项目
5.7万中文话题
155精选专题
发现技术价值,连接开源智慧
© 2026 GitRead · GitHub 中文社区 本站与 GitHub, Inc. 无隶属关系;GitHub 是 GitHub, Inc. 的商标。