本示例看完后,可基本掌握以下内容
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