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

在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg(保姆级避坑指南)

在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg保姆级避坑指南RK3588作为Rockchip新一代旗舰SoC其强大的多媒体处理能力吸引了众多开发者。本文将手把手带你完成FFmpeg的完整编译流程重点解决环境配置、依赖管理、运行时库路径等实际问题确保编译产物在目标板上稳定运行。1. 环境准备与依赖管理在开始编译前我们需要确保Ubuntu 22.04系统具备完整的开发环境。不同于常规的FFmpeg编译RK3588的特殊硬件加速功能需要额外处理。基础依赖安装sudo apt update sudo apt install -y build-essential cmake git meson ninja-build \ pkg-config libdrm-dev libx11-dev libxext-dev libxfixes-dev提示建议使用全新的Ubuntu 22.04系统避免已有开发环境造成的库版本冲突。RK3588开发涉及三个核心组件RKmpp负责视频编解码硬件加速RGA处理2D图像加速FFmpeg-rockchip整合前两者的定制版FFmpeg版本兼容性矩阵组件推荐版本关键特性RKmppjellyfin-mpp分支支持H.264/H.265/VP9硬件解码RGAjellyfin-rga分支优化图像缩放和格式转换FFmpegrockchip定制版集成RKmpp和RGA支持2. RKmpp编译与避坑指南RKmpp是Rockchip提供的多媒体处理框架正确编译它是整个流程的第一步。获取源码git clone -b jellyfin-mpp --depth1 https://github.com/nyanmisaka/mpp.git rkmpp cd rkmpp mkdir install编译配置cmake . \ -DCMAKE_INSTALL_PREFIX$PWD/install \ -DCMAKE_BUILD_TYPERelease \ -DBUILD_SHARED_LIBSON \ -DBUILD_TESTOFF常见问题解决问题1编译时报错undefined reference to drm...解决方案确保已安装libdrm-dev包问题2运行时出现段错误原因系统自带库与编译版本冲突修复使用LD_LIBRARY_PATH隔离环境完整编译命令make -j$(nproc) make install3. RGA编译实战技巧RGA(Raster Graphic Acceleration)是Rockchip的2D加速引擎编译时需要注意工具链选择。依赖检查meson --version # 需≥0.56.0 ninja --version # 需≥1.8.0源码获取与配置git clone -b jellyfin-rga --depth1 https://github.com/nyanmisaka/rk-mirrors.git rkrga cd rkrga mkdir install rkrga_buildMeson配置技巧meson setup . rkrga_build \ --prefix$PWD/install \ --libdirlib \ --buildtyperelease \ --default-libraryshared \ -Dcpp_args-fpermissive \ -Dlibdrmfalse \ -Dlibrga_demofalse编译与安装meson configure rkrga_build ninja -C rkrga_build install注意如果遇到权限问题建议保持本地安装路径不要尝试安装到系统目录。4. FFmpeg-rockchip深度定制现在我们可以编译支持RK硬件的FFmpeg了这里有几个关键配置点需要特别注意。源码获取git clone --depth1 https://github.com/nyanmisaka/ffmpeg-rockchip.git ffmpeg cd ffmpeg mkdir install配置参数解析./configure \ --prefix$PWD/install \ --enable-gpl \ --enable-version3 \ --enable-libdrm \ --enable-rkmpp \ --enable-rkrga \ --extra-cflags-I$(pwd)/../rkmpp/install/include/rockchip \ -I$(pwd)/../rkrga/install/include/rga \ --extra-ldflags-L$(pwd)/../rkmpp/install/lib \ -L$(pwd)/../rkrga/install/lib \ -Wl,-rpath,$(pwd)/../rkmpp/install/lib:$(pwd)/../rkrga/install/lib \ -lrockchip_mpp -lrga关键参数说明-Wl,-rpath设置运行时库搜索路径--enable-rkmpp/rkrga启用硬件加速支持extra-cflags/ldflags指定头文件和库路径编译优化make -j$(nproc) CCgcc -mtunecortex-a76 # 针对RK3588 CPU优化 make install5. 验证与调试实战编译完成后必须进行充分验证才能确保各个组件正常工作。基础功能检查# 检查解码器支持 ./ffmpeg -decoders | grep rkmpp # 检查编码器支持 ./ffmpeg -encoders | grep rkmpp # 检查RGA滤镜 ./ffmpeg -filters | grep rkrga硬件解码测试./ffmpeg -c:v h264_rkmpp -i input.mp4 -f null -观察输出中是否出现h264_rkmpp字样确认硬件解码生效。RGA加速测试./ffmpeg -init_hw_device rkmpphw -filter_hw_device hw \ -c:v h264_rkmpp -i input.mp4 \ -vf hwupload,scale_rkrgaw1920:h1080:formatnv12 \ -f null -常见运行时问题库未找到错误export LD_LIBRARY_PATH$PWD/../rkmpp/install/lib:$PWD/../rkrga/install/lib:$LD_LIBRARY_PATH权限问题sudo usermod -a -G video $USER # 添加video组权限DRI设备访问失败sudo chmod 666 /dev/dri/renderD1286. 部署与优化建议将编译好的FFmpeg部署到RK3588开发板时还需要考虑以下几个实际因素。文件结构规划/opt/rockchip_ffmpeg/ ├── bin/ ├── lib/ └── share/环境变量配置# 在~/.bashrc中添加 export PATH/opt/rockchip_ffmpeg/bin:$PATH export LD_LIBRARY_PATH/opt/rockchip_ffmpeg/lib:$LD_LIBRARY_PATH性能优化参数./ffmpeg -c:v h264_rkmpp -i input.mp4 \ -vf hwupload,scale_rkrgaw1280:h720 \ -c:v h264_rkmpp -b:v 4M -g 30 \ -y output.mp4监控硬件使用情况watch -n 1 cat /sys/kernel/debug/mpp_service/debug在实际项目中我发现RK3588的硬件编解码器对某些特殊格式的支持有限。例如当处理10bit HEVC视频时可能需要额外配置参数才能获得最佳性能。

相关文章:

在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg(保姆级避坑指南)

在Ubuntu 22.04上为RK3588编译带RKmpp和RGA的FFmpeg(保姆级避坑指南) RK3588作为Rockchip新一代旗舰SoC,其强大的多媒体处理能力吸引了众多开发者。本文将手把手带你完成FFmpeg的完整编译流程,重点解决环境配置、依赖管理、运行时…...

告别PDF转换烦恼:Marker让学术文档秒变Markdown的完整指南

告别PDF转换烦恼:Marker让学术文档秒变Markdown的完整指南 【免费下载链接】marker 一个高效、准确的工具,能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式,支持多语言和复杂布局处理,可选集成 LLM 提升精度&#xff0c…...

探索Ryujinx:Nintendo Switch模拟器全解析

探索Ryujinx:Nintendo Switch模拟器全解析 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 在游戏技术不断发展的今天,模拟器技术为玩家提供了跨平台体验游戏的可…...

Marin说PCB之GMSL2 POC电路优化实战---从仿真到测试的完整解析

1. GMSL2 POC电路问题诊断与优化思路 最近在测试GMSL2 POC电路时遇到了一个典型问题:多路信号的插损(S21)和回损(S11)指标不达标。这种情况在实际项目中并不少见,但每次遇到都需要我们仔细分析原因并找到有…...

LSPosed-Irena深度解析:Android运行时Hook框架的终极指南

LSPosed-Irena深度解析:Android运行时Hook框架的终极指南 【免费下载链接】LSPosed-Irena Useless LSPosed Framework Fork 项目地址: https://gitcode.com/gh_mirrors/ls/LSPosed-Irena 你是否曾想过,在不修改APK源代码的情况下,深度…...

如何利用多渠道SEO推广提高网站流量

<h2>多渠道SEO推广&#xff1a;如何提高网站流量</h2> <p>在当前竞争激烈的互联网环境中&#xff0c;网站流量是衡量网站成功与否的重要指标之一。如何利用多渠道SEO推广提高网站流量&#xff0c;成为了每一个网站运营者关注的焦点。本文将从问题分析、原因说…...

突破性网络资源嗅探解决方案:从技术困境到智能下载的革命性跨越

突破性网络资源嗅探解决方案&#xff1a;从技术困境到智能下载的革命性跨越 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gi…...

PDF文本高效提取:用pdftotext实现秒级文档内容解析

PDF文本高效提取&#xff1a;用pdftotext实现秒级文档内容解析 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 破解PDF提取痛点&#xff1a;为什么你需要专业工具&#xff1f; 每天面对数十份PDF文档却…...

AI辅助学术写作:Qwen3-0.6B-FP8搭配LaTeX生成论文章节与参考文献

AI辅助学术写作&#xff1a;Qwen3-0.6B-FP8搭配LaTeX生成论文章节与参考文献 写论文&#xff0c;尤其是写引言和参考文献&#xff0c;是不是让你特别头疼&#xff1f;对着空白的文档发呆&#xff0c;不知道从何下笔&#xff1b;或者为了找一篇关键的参考文献&#xff0c;在数据…...

CLIP-GmP-ViT-L-14图文匹配工具部署教程:Ubuntu 22.04 + Python 3.10 完整环境配置

CLIP-GmP-ViT-L-14图文匹配工具部署教程&#xff1a;Ubuntu 22.04 Python 3.10 完整环境配置 你是不是经常好奇&#xff0c;一张图片到底和哪段文字描述最匹配&#xff1f;比如&#xff0c;你拍了一张自家宠物的照片&#xff0c;想知道AI会觉得它更像“一只可爱的猫”还是“一…...

Pixel Dimension Fissioner 镜像深度配置:环境变量与启动参数详解

Pixel Dimension Fissioner 镜像深度配置&#xff1a;环境变量与启动参数详解 1. 为什么需要深度配置&#xff1f; 当你第一次部署Pixel Dimension Fissioner镜像时&#xff0c;默认设置可能已经能满足基本需求。但随着使用场景的复杂化&#xff0c;你会发现很多情况下需要根…...

从零构建:基于C语言的Modbus RTU从站驱动开发指南

1. Modbus RTU从站驱动开发入门指南 第一次接触Modbus RTU从站开发时&#xff0c;我完全被各种专业术语搞晕了。后来在工厂里调试一个温湿度传感器时&#xff0c;才真正理解这个协议的精妙之处——它就像车间里老师傅们约定俗成的对话方式&#xff0c;主设备问一句&#xff0c;…...

别再被MPU6050的偏航角坑了!手把手教你用MPU9250(或外接HMC5883L磁力计)彻底解决零飘问题

彻底解决MPU6050偏航角零飘&#xff1a;硬件升级与磁力计融合实战指南 在无人机、平衡车和机器人姿态控制领域&#xff0c;MPU6050曾是许多开发者的首选惯性测量单元(IMU)。这款经典的六轴传感器以低廉的价格和稳定的性能赢得了市场&#xff0c;但它的一个致命缺陷让无数工程师…...

手把手教你用Wireshark抓包分析Opener EIP通信,快速定位ForwardOpen失败原因

深度解析EtherNet/IP通信&#xff1a;用Wireshark诊断ForwardOpen失败的实战指南 当你在MCU上成功移植了Opener协议栈&#xff0c;TCP连接建立正常&#xff0c;却在关键时刻遭遇ForwardOpen失败时&#xff0c;那种挫败感我深有体会。去年在汽车生产线控制系统项目中&#xff0c…...

Python实战:5分钟搞定睿尔曼机械臂与AGV底盘的Socket通信(附完整代码)

Python实战&#xff1a;5分钟搞定睿尔曼机械臂与AGV底盘的Socket通信&#xff08;附完整代码&#xff09; 在工业自动化领域&#xff0c;复合机器人正逐渐成为提升生产效率的关键设备。这类机器人通常由AGV&#xff08;自动导引运输车&#xff09;底盘和机械臂组成&#xff0c;…...

USB批量传输中ZLP的必要性:为何512字节整数倍数据包会丢失

1. USB批量传输中的ZLP到底是什么&#xff1f; 第一次遇到USB批量传输丢数据的问题时&#xff0c;我也是一头雾水。明明发送端显示数据已经成功发送&#xff0c;接收端却死活收不到完整数据。后来排查发现&#xff0c;问题出在数据包大小刚好是512字节的整数倍时。这就是我们今…...

Codesys电子凸轮Cam表两种设置方法对比:可视化拖拽 vs 程序动态配置

Codesys电子凸轮Cam表设置方法深度对比&#xff1a;可视化拖拽与程序动态配置实战解析 在工业自动化领域&#xff0c;电子凸轮技术正逐步取代传统机械凸轮&#xff0c;成为运动控制系统的核心组件。作为Codesys平台下的重要功能&#xff0c;Cam表的设置方法直接关系到运动轨迹…...

不用编译!快速修改Scratch-blocks积木字体的偷懒方法

零编译实战&#xff1a;Scratch-blocks字体调整极简方案 在Scratch 3.0的二次开发过程中&#xff0c;积木字体过小是开发者普遍遇到的痛点。官方移除了字体调节功能后&#xff0c;低分辨率设备上的中文显示尤为模糊。传统解决方案需要配置Python环境并重新编译scratch-blocks库…...

Flutter Gradle插件迁移指南:从apply script到声明式plugins的实践

1. 为什么需要迁移到声明式plugins块 最近在维护一个Flutter项目时&#xff0c;我发现每次构建Android端都会弹出一个黄色警告&#xff1a;"You are applying Flutters app_plugin_loader Gradle plugin imperatively using the apply script method..."。这个警告看…...

如何快速配置安卓虚拟摄像头VCAM:专业使用技巧完整指南

如何快速配置安卓虚拟摄像头VCAM&#xff1a;专业使用技巧完整指南 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam 安卓虚拟摄像头VCAM是一款基于Xposed框架的创新工具&#xff0c;能够将…...

别再死记硬背公式了!图解OpenCV相机标定:从像素到世界的坐标变换到底在干啥?

图解OpenCV相机标定&#xff1a;从像素到世界的坐标变换全解析 当你第一次看到相机标定的数学公式时&#xff0c;是不是感觉像在看天书&#xff1f;旋转矩阵、平移向量、内参矩阵...这些抽象的概念到底对应着现实世界中的什么&#xff1f;本文将用最直观的方式&#xff0c;带你…...

RWKV7-1.5B-g1a开源模型实战:轻量级AI助手在中小企业的落地

RWKV7-1.5B-g1a开源模型实战&#xff1a;轻量级AI助手在中小企业的落地 1. 模型简介 rwkv7-1.5B-g1a 是一个基于 RWKV-7 架构的多语言文本生成模型&#xff0c;专为中小企业设计的轻量级AI助手解决方案。这个1.5B参数的模型在保持较小体积的同时&#xff0c;提供了足够强大的…...

CayenneMQTT库详解:嵌入式设备快速接入MQTT平台

1. CayenneMQTT 库概述 CayenneMQTT 是一个专为物联网设备设计的轻量级 MQTT 客户端库&#xff0c;核心目标是将嵌入式终端&#xff08;如 Arduino、ESP8266、ESP32&#xff09;快速、可靠地接入 Cayenne IoT 平台 的可视化仪表盘。该库并非从零实现 MQTT 协议栈&#xff0c…...

两端间隔数总个数

两端间隔数总个数 结尾序号 - 开头序号 1需要将索引还原成长度&#xff0c;索引1就好了...

dll修复工具绿色版免安装,2026年最新版实测与风险提示

正急着用电脑&#xff0c;突然弹窗“缺少dll文件”&#xff0c;游戏或软件打不开。第一反应就是赶紧找个工具修好它&#xff0c;但又不想在电脑上装一堆乱七八糟的软件&#xff0c;就想找个绿色版、免安装的&#xff0c;用完就能删&#xff0c;不留痕迹。但网上这种小工具满天飞…...

Windows环境下Jaeger全链路监控系统搭建指南

1. 为什么需要全链路监控系统 在微服务架构中&#xff0c;一个用户请求可能会经过多个服务的处理。想象一下&#xff0c;你在电商网站下单时&#xff0c;这个操作会触发订单服务、支付服务、库存服务等多个系统的协同工作。当出现问题时&#xff0c;传统的日志排查就像在迷宫里…...

突破百度网盘限速壁垒:5步实现直链高速下载全攻略

突破百度网盘限速壁垒&#xff1a;5步实现直链高速下载全攻略 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否经历过这样的场景&#xff1a;加班后想下载公司共享的设计素材包&#xff…...

电容器阻抗与ESR频率特性解析:从理论到高频应用实践

1. 电容器阻抗与ESR的基础原理 当你第一次听说电容器有"阻抗"和"ESR"时&#xff0c;可能会觉得这是两个高深莫测的专业术语。其实理解它们并不难&#xff0c;就像理解水管里的水流一样直观。想象一下&#xff0c;电容器就像是一个储水罐&#xff0c;而阻抗…...

3步实现UMA模型吸附能预测:从数据准备到结果验证完整指南

3步实现UMA模型吸附能预测&#xff1a;从数据准备到结果验证完整指南 【免费下载链接】ocp Open Catalyst Projects library of machine learning methods for catalysis 项目地址: https://gitcode.com/GitHub_Trending/oc/ocp 在催化材料研究中&#xff0c;吸附能是评…...

chromedp实战:如何用JavaScript绕过iframe内容获取难题(附完整代码)

chromedp实战&#xff1a;突破iframe内容获取的JavaScript高阶技巧 在电商数据抓取和动态内容监控场景中&#xff0c;iframe始终是爬虫开发者最头疼的障碍之一。传统DOM操作方法在iframe嵌套页面面前往往束手无策&#xff0c;而chromedp提供的Evaluate系列方法则打开了新世界的…...