使用Gstreamer+OpenCV实现两路图像数据混合拉流推流

本示例看完后,可基本掌握以下内容
1、利用opencv+gstreamer拉流推流的基本步骤
2、可学习gstreamer,图像混合的一些插件用法
3、TX2 NX上的视频编解码与硬件加速
4、linux下如何提高线程优先级

我需要实现的功能是在TX2 NX,拉取摄像头数据,并再摄像头数据上与另一张图片混合
混合后推流到rtsp服务器。

由于混合的时候需要保留透明度,但是OpenCV不支持四通道的数据写入。硬件加速混合插件无法剔除透明度。当然可以用内存中剔除指定颜色的插件实现,但效率太低

所以只能利用VideoCapture先拉到摄像头数据,利用要混合的图片,手动计算叠加。

叠加后利用VideoWriter推流

为提高效率,通过将线程绑定在固定CPU上,提高了线程优先级。

具体流程:
首先搭建rtsp服务端,可利用rtsp-simple-serve这个项目在局域网部署一套
 
 安装gstreamer后
 由于用到了rtspclientsink插件,所以需要安装rtsp插件
// sudo apt-get update
// sudo apt-get upgrade
// sudo apt install gstreamer1.0-rtsp

下面是利用VideoWriter推流的过程

//cpp 实现
#include "rtsp_push_stream.h"

RtspPushStream::RtspPushStream() : active_(true) {}

RtspPushStream::~RtspPushStream() {}
void RtspPushStream::start() {
 
    st

你可能感兴趣的:(gstreamer,gstreamer,opencv,rtspclientsink,rtsp推流,图片混合)