Gstreamer-OpenCV的RTSP服务搭建以及推拉流实现

简介

采用边缘设备进行推流,例如RV1126或jetson等,获取检测结果后推流至目的地。在进行视觉任务的程序,无需额外编写独立的串流程序,可以直接将串流和opencv调用驱动结合在一起。

环境配置

bash 复制代码
sudo apt-get install gstreamer1.0 gstreamer1.0-plugin-bad  gstreamer1.0-plugin-good gstreamer1.0-plugin-ugly 

服务器建设

服务器假设的方法有很多,也可以自行写代码编译运行。这里推荐一个已经编译好的rtsp服务器软件。

bash 复制代码
https://github.com/bluenviron/mediamtx.git

在release中下载对应服务器架构的软件包,解压即可使用,假设的服务器ip为运行程序的本机地址。

bash 复制代码
./mediamtx

推送RTSP流

opencv推流非常简单,只需要按照gstreamer的格式编辑好字符串,然后通过视频输出接口cv::VideoWriter进行输出,就可以直接对接软件外部的推流程序。更方便的是,如果含有nvidia设备,可以通过修改字符串的配置直接调用nvidia编解码设备,而不用编写任何代码,进行硬编码。

cpp 复制代码
	int fps = 30;
    std::string enc_cpu = "appsrc ! videoconvert ! video/x-raw,width="+ std::to_string(src.cols) +
    ",height="+ std::to_string(src.rows) +
    ",framerate="+ std::to_string(fps) +
    "/1 ! x264enc speed-preset=veryfast tune=zerolatency bitrate=800 ! rtspclientsink location="+url+" latency=0";
        
    int fourcc = cv::VideoWriter::fourcc('N', 'V', '1', '2');
    cv::Size frameSize(src.cols, src.rows ); // 根据ROS图像消息的分辨率进行调整
    cv::VideoWriter videoWriter(enc_cpu, cv::CAP_GSTREAMER, fourcc, fps, frameSize);
	
	videoWriter.write(src);

抓取RTSP流

VLC方法,延迟高。推荐直接使用gst-launch命令进行拉流。其中不同插件可以根据情况改变。有其实有Nvidia显卡支持的时候,采用nv编解码器会极大的提升效率和速度。

bash 复制代码
gst-launch-1.0 rtspsrc location=rtsp://192.168.0.166:8554/stream ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
相关推荐
LaughingZhu38 分钟前
Product Hunt 每日热榜 | 2026-02-14
数据库·人工智能·经验分享·神经网络·搜索引擎·chatgpt
大模型探员39 分钟前
告别答非所问!深度解析文档切分如何决定RAG的搜索上限
人工智能
民乐团扒谱机1 小时前
【读论文】深度学习中的卷积算术指南 A guide to convolution arithmetic for deep learning
人工智能·深度学习·神经网络·机器学习·cnn·卷积神经网络·图像识别
byzh_rc1 小时前
[深度学习网络从入门到入土] 拓展 - Inception
网络·人工智能·深度学习
阿里巴巴淘系技术团队官网博客1 小时前
从应用架构的视角看退小宝AI助手落地现状
人工智能·架构
寻星探路1 小时前
【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机
java·开发语言·jvm·人工智能·python·算法·ai
Elastic 中国社区官方博客1 小时前
DevRel 通讯 — 2026 年 2 月
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·jina
一个天蝎座 白勺 程序猿1 小时前
飞算JavaAI:从情绪价值到代码革命,智能合并项目与定制化开发新范式
人工智能·ai·自动化·javaai
田里的水稻2 小时前
FA_融合和滤波(FF)-联邦滤波(FKF)
人工智能·算法·数学建模·机器人·自动驾驶
摘星编程2 小时前
解析CANN ops-transformer的FlashAttention算子:注意力机制的内存优化
人工智能·深度学习·transformer