VideoPipe-使用VLC构建RTSP串流显示
文章目录
- VideoPipe简介
- VideoPipe-Samples
- VideoPipe-nodes
- vp_rtsp_src_node
- VLC搭建本地RTSP串流服务器测试
VideoPipe简介
VideoPipe是一个用 C++ 编写的视频分析和结构化框架。它具有最小的依赖性并且易于使用。它的运行方式类似于管道,其中每个节点都是独立的,可以以各种方式组合。VideoPipe可用于构建不同类型的视频分析应用程序,适用于视频结构化、图像搜索、人脸识别和交通/安全领域的行为分析(例如交通事件检测)等场景。
项目地址:sherlockchou86/VideoPipe
VideoPipe-Samples
VideoPipe 提供了大量丰富、开源的测试样例供用户把玩尝试,对新手十分友好,包括人脸识别、换脸,车流量统计、越线检测计数、停车检测(基于Yolov3-tiny/Yolov8x)、目标追踪等案例(这里也向开源作者致敬!感谢分享,Respect!!!)
VideoPipe-nodes
VideoPipe通过将功能封装成节点的方式,将大量常用、实用的视频结构化开发工具集成到nodes目录中,方便用户构建Pipeline时可以像搭积木一样调用;此外,VideoPipe还支持各种算力架构的加速节点支持,包括CUDA、Tensorrt(实测大大降低显存、CPU占用率,具有超高推理性能),用户也可以自己创建推理结点编写自定义样例(欢迎基础样例源码开源共享、教程分享!)
vp_rtsp_src_node
以nodes目录下的vp_rtsp_src_node.cpp/.h为例,作者已经提供了通过rtsp串流输入视频的节点,具体调用参数含义如下:
#include "vp_rtsp_src_node.h"
int main() {
// 创建一个 vp_rtsp_src_node 实例
std::string node_name = "rtsp_node";
int channel_index = 0;
std::string rtsp_url = "rtsp://admin:admin12345@192.168.77.110:554/";
float resize_ratio = 0.5; // 可选参数,调整帧大小的比例
std::string gst_decoder_name = "avdec_h264"; // 可选参数,指定解码器
int skip_interval = 2; // 可选参数,跳过帧的间隔
auto rtsp_node = std::make_shared<vp_nodes::vp_rtsp_src_node>(
node_name,
channel_index,
rtsp_url,
resize_ratio,
gst_decoder_name,
skip_interval
);
// 启动节点处理线程
rtsp_node->start();
// 其他处理逻辑...
// 停止节点处理线程
rtsp_node->stop();
return 0;
}
所以在构建Pipeline时可以通过像rtsp_sample中的读取本地视频的方式一样声明:
这样就可以通过rtsp串流作为视频信号输入:
同理也可以尝试使用vp_rtsp_des_node进行串流输出。
VLC搭建本地RTSP串流服务器测试
参考教程:
使用VLC 搭建 RTSP 服务器
需要注意的地方:教程里没有勾选转码,这里我们需要改为勾选转码,否则声明vp_rtsp_src_node时需要添加转码的参数。