在RK3588上使用Gstreamer做推拉流并推理记录

这篇具有很好参考价值的文章主要介绍了在RK3588上使用Gstreamer做推拉流并推理记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在RK3588上使用Gstreamer做推拉流并推理记录

基础环境

角色 版本
rknn-toolkit2 1.2.0
python 3.7.3

1. 视频流使用结构

视频流拉取:

video/rtsp/camera ! decoder ! videoconvert ! appsink

视频流推流或显示:

appsrc ! display

推理结构:

appsink——rknn.inference(model)——appsrc

2. 环境安装

2.1 Gstreamer安装

apt-get update
apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
apt-get install libunwind8-dev

pkg-config --cflags --libs gstreamer-1.0
# 查看效果
dpkg -l | grep gstreamer

测试,在终端输入以下正常运行则安装成功

gst-launch-1.0 filesrc location=./test.mp4  ! decodebin ! videoconvert ! ximagesink

2.2 opencv安装

不能使用python3-opencv,通过pip安装的opencv无法支持gstreamer,必须使用源码编译安装

git clone https://github.com/opencv/opencv.git
unzip opencv.zip # 解压zip压缩包
cd opencv # 切换到源码包目录
mkdir build && cd build # 创建build目录并切换进去
# 其中需要配置python目录以及对gstreamer支持
cmake -D WITH_GSTREAMER=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D  PYTHON3_PACKAGES_PATH=/usr/local/python3.7/lib/python3.7/site-packages/ -D PYTHON3_LIBRARY=/usr/local/python3.7/lib/libpython3.7m.so -D OPENCV_GENERATE_PKGCONFIG=YES  ..

确保opencv开启对gstreamer与python支持的api。

 Video I/O:
    DC1394:                      YES (2.2.5)
    FFMPEG:                      YES
      avcodec:                   YES (58.54.100)
      avformat:                  YES (58.29.100)
      avutil:                    YES (56.31.100)
      swscale:                   YES (5.5.100)
      avresample:                YES (4.0.0)
    GStreamer:                   YES (1.16.2)   # 识别到gstreamer
    v4l/v4l2:                    YES (linux/videodev2.h)
Python 3:
    Interpreter:                 /usr/local/bin/python3 (ver 3.7.3)
    Libraries:                   /usr/local/python3.7/lib/libpython3.7m.so (ver 3.7.3)
    numpy:                       /usr/local/python3.7/lib/python3.7/site-packages/numpy/core/include (ver 1.21.6)
    install path:                /usr/local/python3.7/lib/python3.7/site-packages//cv2/python-3.7

编译安装

make -j4 # 编译
make install # 安装opencv库到/usr/local下

cd /etc/ld.so.conf.d/ # 切换目录
touch opencv.conf # 新建opencv配置文件
echo /usr/local/lib/ > opencv.conf # 填写opencv编译后库所在的路径
sudo ldconfig # 使配置文件生效

最后需要把cv2模块的代码目录中的cv2.so拷贝到python的site-packages目录中,替换原本python3-opencv的cv2.so。

    注:#  如果查不到opencv的版本,需要将opencv4.pc 重命名为opencv.pc

运行以下程序正常表示安装成功

root@ztl:/# python3
Python 3.7.3 (default, Jul  6 2022, 07:24:11) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.getBuildInformation())

3. 使用案例

拉流:

rtsp拉取:in_gst = ('rtspsrc location={} latency=0 ! rtph264depay ! decodebin ! videoconvert ! video/x-raw,format=(string)BGR ! appsink  drop=true').format(url)
mp4视频拉取解码:in_gst = ('filesrc location={} ! decodebin ! videoconvert ! video/x-raw,format=BGR! appsink drop=true caps=video/x-raw,format=BGR').format(url)

推流:

本地显示:out_gst = 'appsrc is-live=true caps=video/x-raw,format=(string)BGR,framerate=(fraction)30/1 ! videoconvert !  ximagesink sync=false'
rtmp推流:后续更新

推理:文章来源地址https://www.toymoban.com/news/detail-513200.html

# 视频帧数据处理
cap_in = cv2.VideoCapture(in_gst, cv2.CAP_GSTREAMER)
cap_out = cv2.VideoWriter(out_gst, cv2.VideoWriter_fourcc(*'H264'), fps, (640, 320), True)
# 逐帧推理
output = model.inference(image)
# 视频流输出
cap_out = cv2.write(image)

到了这里,关于在RK3588上使用Gstreamer做推拉流并推理记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RK3588环境配置过程全记录 step 1

    最近在做毕设,由于是第一次接触NPU,所以踩了不少坑,顺便将它记录下来,防止后来者继续踩(doge)hh。 许多人都和我一样,刚到手拿到一块NPU算力版的时候都不知道从何下手,是先在PC端操作呢还是直接在板子上操作? 本人虽然熟悉一些类似于STM32 ,esp等板子,但是也是

    2024年02月09日
    浏览(34)
  • 踩坑记录2——RK3588跑通YOLO v5+DeepSORT

    上篇说到RK3588编译OpenCV, 这篇记录一下跑通YOLO v5+DeepSORT的愉(chi)快(shi)历程. 如果本身缺少ffmpeg而编译了没有ffmpeg版本的OpenCV, 则视频无法读取. 解决方案参照CSDN, 首先安装ffmpeg: 之后安装一堆dev: libavcodec-dev 、libavformat-dev、libavutil-dev 、libavfilter-dev、 libavresample-dev、 libswresample

    2024年01月22日
    浏览(27)
  • RK3588 PWM调试记录---linux pwm子系统驱动框架

    RK3588一共有4组PWM,每组有4个通道,共可以产生4*4=16路PWM波形; PWM0 开始地址:0xfd8b0000 PWM1 开始地址:0xfebd0000 PWM2 开始地址:0xfebe0000 PWM3 开始地址:0xfebf0000 即每组PWM的地址空间是(0xfd8b0000-0xfebd0000=0x1000)64KB(0x1000/1024) RK3588的PWM支持捕获、连续和单次触发三种模式。 1.捕获模式

    2024年02月12日
    浏览(39)
  • 一套rk3588 rtsp服务器推流的 github 方案及记录 -01

    我不生产代码,我只是代码的搬运工,相信我,看完这个文章你的图片一定能变成流媒体推出去。 诉求:使用opencv拉流,转成bgr数据,需要把处理后的数据(BGR)编码成264,然后推流推出去,相当于直播(实时编码) 超低延迟的RTSP播放器 https://github.com/tsingsee/EasyPlayer-RTSP-

    2024年02月04日
    浏览(40)
  • 一套rk3588 rtsp服务器推流的 github 方案及记录 -02

    整体方案参考上一篇博文 https://blog.csdn.net/qq_31764341/article/details/134810566 本篇博文主要介绍基于RK3588进行硬解码 还是之前的套路,我不生产代码,我只是代码的搬运工,今天我们搬运瑞芯微的官方代码,并记录下来整个调试历程。两篇文章下来,我们3588上面的流肯定能出来

    2024年03月24日
    浏览(27)
  • 一套rk3588 rtsp服务器推流的 github 方案及记录 -03(完结)

    解码库使用的时候发现瑞芯微以前做过解码库对ffmpeg和gstreamer的支持 然后最近实在不想再调试Rtsp浪费时间了,就从这中间找了一个比较快的方案 编译流程参考文献 https://blog.csdn.net/T__zxt/article/details/123424359 编译的ffmpeg是这个版本 https://github.com/jjm2473 安装了下面这些东西:

    2024年02月01日
    浏览(57)
  • 香橙派5 RK3588 yolov5模型转换rknn及部署踩坑全记录 orangepi 5

    由于距离写这篇文章过去很久,有的部分,官方已更新,请多结合其他人的看,并多琢磨、讨论~ 另外打个小广告: 博客 https://blog.vrxiaojie.top/ 欢迎大家前来做客玩耍,提出问题~~ 以后的文章都会在博客发布了,CSDN这边可能这是最后一篇文章。 (1) 使用官方提供的Ubuntu镜像:

    2024年02月05日
    浏览(35)
  • RK3588使用openCL

    一、opecnCL简介         OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核

    2024年02月07日
    浏览(53)
  • rk3588 ffmpeg使用硬件解码

    在https://johnvansickle.com/ffmpeg/下载最新的版本然后解压 将ffmpeg移动到/usr/local/bin文件夹 命令行输入ffmpeg没有报错就安装好了 git下载mpp包 编译安装 解压 –prefix 指定安装目录 –host 当前编译工具链的前缀 ll /usr/bin/gcc*查看 编译指令 –enable-gpl 允许使用GPL代码,生成的库和二进制

    2024年02月04日
    浏览(29)
  • RK3588平台开发系列讲解(工具篇)ADB的使用

    平台 内核版本 安卓版本 RK3588 Linux 5.10 Android 12 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍ADB的使用。 ADB(Android Debug Bridge)是一种用于在计算机和Android设备之间进行通信和调试的工具。它允许开发者通过命令行界面与Android设备进行交互,并执行各种

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包