前言
在RK3288主板Debian 9.13系统上想调用CPU硬解进行网络摄像头视频流进行解码,本来尝试用FFmpeg+Mpp方式进行,但ffmpeg集成mpp的解码器,解码后的格式为AV_PIX_FMT_DRM_PRIME,也就是 DRM 帧数据,要进行图像识别还得通过CPU转码为RGB或BGR格式。按照这个过程下来,光解码CPU的占用率就很高。。。后来在Rockchip的wiki_Mpp上看到,对Mpp有如下的一段说明:
We offer the Gstreamer Rockchip, it is a standard Gstreamer plugin for the hardware decoder and encoder at Rockchip platform. I would suggest all the user in the Linux don’t develop the MPP directly unless you know what you are doing. Choose Gstreamer rocckchip in you convenience.
简而言之就是建议Linux下的用户不要直接使用MPP进行开发,推荐用标准的Gstreamer插件。了解到,原来OpenCV可以集成Gstreamer进行使用。运行Gstreamer的例子发现,RK3288解码4K画面是很流畅。
- Debian GNU/Linux 9.13 (stretch) armv7l
- OpenCV 3.4.11
- Gstreamer 1.10.4
Gstreamer解码RTSP命令
#!/bin/sh
gst-launch-1.0 rtspsrc location=rtsp://192.168.31.163:8554/ ! \
! rtph264depay ! h264parse ! mppvideodec ! rkximagesink sync=false
安装需要的依赖包
apt-get update
apt-get install -y libgstreamer-plugins-base1.0-dev \
libpng16-16 \
build-essential \
cmake \
git \
pkg-config \
libjpeg-dev \
libgtk2.0-dev \
libv4l-dev \
libatlas-base-dev \
gfortran \
libhdf5-dev \
libtiff5-dev \
libtbb-dev \
libeigen3-dev
编译OpenCV
cd到3.4.11.zip文件目录下,执行如下命令:
unzip 3.4.11.zip # 解压zip压缩包
cd opencv-3.4.11 # 切换到源码包目录
mkdir build && cd build # 创建build目录并切换进去
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=OFF -D WITH_GSTREAMER=ON -D WITH_GTK_2_X=ON -D WITH_GTHREAD=ON -D WITH_TBB=ON -D WITH_OPENGL=ON .. # 配置opencv 此处注意有两个点
如果配置成功的话,应该会有如下输出:
-- OpenCV modules:
-- To be built: calib3d core dnn features2d flann hig

本文介绍如何在RK3288主板Debian9.13系统上利用Gstreamer进行CPU硬解,实现网络摄像头视频流的高效解码。文章提供了详细的依赖包安装步骤、OpenCV编译配置方法及测试代码,展示了Gstreamer在4K画面解码上的优异性能。
最低0.47元/天 解锁文章
6919





