当前位置: 首页 > news >正文

RK3588 HDMI-RX 驱动、RGA 加速与 OpenCV GStreamer 支持完整指南

一、环境检测与前置依赖

确认内核与 HDMI-RX 节点:

uname -a
# 输出:6.1.0-1025-rockchip ...dmesg | grep -i hdmirx
# 应能看到 hdmirx-controller 节点:
# fdee0000.hdmirx-controller driver probe ok!

如果仅出现:

rockchip-dmc dmc: hdmirx_rate = 2112000000

说明设备树已识别 hdmirx,但没有加载 Overlay (rk3588-hdmirx.dtbo)

更新系统依赖:

sudo apt update
sudo apt install -y \gstreamer1.0-plugins-base gstreamer1.0-plugins-good \gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-tools v4l-utils

二、启用 HDMI-RX Overlay

  1. 获取或编译 Overlay 文件
    从 Joshua-Riek Rockchip Ubuntu 仓库 下载 rk3588-hdmirx.dtbo,拷贝到固件路径:

sudo cp rk3588-hdmirx.dtbo \/lib/firmware/6.1.0-1025-rockchip/device-tree/rockchip/overlay/
  1. 编辑 u-boot 配置

sudo vim /etc/default/u-boot

取消注释并加入:

U_BOOT_FDT_OVERLAYS="device-tree/rockchip/overlay/rk3588-hdmirx.dtbo"
  1. 更新并重启

sudo u-boot-update
sudo reboot
  1. 验证驱动加载

dmesg | grep -i hdmirx
v4l2-ctl --list-devices
ls /dev/video*
# 应看到 /dev/video0 (hdmirx)

三、安装 RGA 硬件加速支持

  1. 安装 librga 并生成 pkg-config

git clone https://github.com/airockchip/librga.git
cd librgasudo mkdir -p /usr/local/lib/pkgconfig
sudo tee /usr/local/lib/pkgconfig/librga.pc > /dev/null <<'EOF'
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/includeName: librga
Description: Rockchip Raster Graphic Acceleration library
Version: 2.2
Libs: -L${libdir} -lrga
Cflags: -I${includedir}
EOF
  1. 复制头文件和库文件

sudo cp -r include/* /usr/local/include/
sudo cp libs/Linux/gcc-aarch64/* /usr/local/lib/
sudo ldconfig
  1. 配置环境变量

echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc
source ~/.bashrc
  1. 测试

pkg-config --modversion librga
# 输出 2.2(或实际版本)

四、构建 gstreamer-rgaconvert 插件

git clone https://github.com/higithubhi/gstreamer-rgaconvert.git
cd gstreamer-rgaconvert
meson setup build --wipe
ninja -C build
sudo ninja -C build install

安装完成后,将插件放到 GStreamer 搜索路径:

sudo cp build/libgstrgaconvert.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0/

测试插件:

gst-inspect-1.0 rgaconvert

五、重建支持 GStreamer 的 OpenCV 5.x

  1. 准备源码

git clone https://github.com/opencv/opencv.git
cd opencv && git checkout 5.x && cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib && git checkout 5.x && cd ..
  1. 构建 OpenCV

mkdir build_opencv && cd build_opencvcmake ../opencv \-D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=~/opencv-gst-install \-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \-D WITH_GSTREAMER=ON \-D WITH_GTK=ON \-D WITH_FFMPEG=ON \-D WITH_V4L=ON \-D BUILD_opencv_highgui=ON \-D OPENCV_ENABLE_NONFREE=ON \-D BUILD_EXAMPLES=OFF \-D PYTHON3_EXECUTABLE=$(which python) \-D PYTHON3_INCLUDE_DIR=$(python -c "from sysconfig import get_paths; print(get_paths()['include'])") \-D PYTHON3_LIBRARY=$(python -c "import sysconfig, sys; print(sysconfig.get_config_var('LIBDIR') + '/libpython' + sys.version[:3] + '.so')") \-D PYTHON3_PACKAGES_PATH=$(python -c "import site; print(site.getsitepackages()[0])")

如果 CMake 输出:

-- GStreamer: YES
-- Found librga: /usr/local/lib/librga.so

表示 RGA 与 GStreamer 支持已启用。


六、测试 HDMI 输入 + RGA 加速

  1. 直接用 GStreamer 测试

DEVICE=/dev/video0
gst-launch-1.0 v4l2src device=$DEVICE io-mode=4 ! \rgaconvert ! \video/x-raw,width=1280,height=720,format=NV12 ! \autovideosink
  1. OpenCV + GStreamer

import cv2pipeline = ("v4l2src device=/dev/video0 io-mode=4 ! ""video/x-raw,format=NV12,width=1920,height=1080 ! ""rgaconvert ! ""video/x-raw,width=1280,height=720,format=NV12 ! ""appsink"
)cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)while cap.isOpened():ret, frame = cap.read()if not ret:breakcv2.imshow("HDMI-IN with RGA", frame)if cv2.waitKey(1) & 0xFF == 27:  # ESC 退出breakcap.release()
cv2.destroyAllWindows()

http://www.dtcms.com/a/297542.html

相关文章:

  • 测试覆盖率:衡量测试的充分性和完整性
  • 巧用Proxy与异步编程:绕过浏览器安全限制实现文件选择器触发
  • JAVA同城服务家政服务家政派单系统源码微信小程序+微信公众号+APP+H5
  • 大语言模型生成式人工智能企业应用
  • 【Android】桌面小组件开发
  • 【通识】如何看电路图
  • Python 程序设计讲义(21):循环结构——while循环
  • C++ 常用的数据结构(适配器容量:栈、队列、优先队列)
  • centos 7 开启80,443端口,怎么弄?
  • CentOS 8 安装HGDB V4.5 psql命令执行报错
  • VR 污水处理技术赋能广州猎德污水处理厂,处理效率显著提升
  • 从0开始学习R语言--Day57--SCAD模型
  • 无需 Root 关闭联网验证 随意修改手机名称(适用于OPPO、一加、真我)
  • 图论水题日记
  • 图论:最小生成树
  • 从零开始:在 PyCharm 中搭建 Django 商城的用户注册与登录功能(轮播图+商品页-小白入门版)
  • 判断子序列-leetcode
  • HAL 中断
  • Python 数据分析(一):NumPy 基础知识
  • Kubernetes资源优化完整指南:从理论到实践的全面解决方案
  • Python之JSON:数据交换的轻量级桥梁
  • 【Unity笔记】OpenXR 之VR串流开发笔记:通过RenderTexture实现仅在PC端展示UI,在VR眼镜端隐藏UI
  • C语言|指针的应用
  • 算法:最长递增子序列解法记录
  • 【RDMA】Adapters PRM Mellanox Adapters Programmer’s Reference mellanox网卡编程手册0.52
  • C 语言输入输出 (I/O)
  • 数据结构学习之堆
  • 【C语言进阶】一篇文章教会你文件的读写
  • 基于GeoTools和SpringBoot的省域驾车最快路线生成实践
  • 金仓数据库:融合与智能驱动下的革新与未来