【正点原子Linux连载】第三章 RKMedia编译和使用 摘自【正点原子】ATK-DLRV1126系统开发手册

news2024/11/16 22:02:01

第三章 RKMedia编译和使用

5.1 RKMedia编译
Rkmedia是RK官方封装一层简易的API,把RGA、MPP、RKNN等等这些接口封装成高级的接口。在SDK官方的源码目录下,运行以下命令进行跳转:
cd external/rkmedia/examples/
ls
运行命令结果如下所示:
在这里插入图片描述

图4.12.1.1 rkmedia官方的demo
里面有很多C文件的代码,可以结合Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf文档(路径为:开发板光盘A-基础资料08、RV1126参考资料RV1126_RV1109MultimediaRockchip_Developer_Guide_Linux_RKMedia_CN.pdf)进行修改和测试。编译方法如下命令所示:
source envsetup.sh alientek_rv1126 //选择环境变量alientek_rv1126
make rkmedia-dirclean //清除刚刚编译的rkmedia
make rkmedia //重新编译rkmedia
./build.sh rootfs //打包到文件系统里面
编译完成后重新烧录oem.img分区即可,因为RK官方把音频库都放在oem.img分区里面。
5.2 RKMedia 使用
在上一小节里面我们已经编译和烧录进开发板。接着就接上串口,开发板上电,进入终端。在终端里面输入“rkmedia_”在按TAB键,会显示很多命令,运行结果如下图所示:
在这里插入图片描述

图4.12.2.1 rkmedia命令例程
这里列一些常用的例程(例程太多了和有些例程有BUG)讲解如何使用这些命令:
5.2.1 rkmedia_ai_test
调用录音功能,录制PCM格式的音频文件。下表是使用的参数:
在这里插入图片描述

使用方法,运行以下命令:

rkmedia_ai_test
amixer cset name=‘Digital Capture Volume’ 120,120 //录音质量不行,可以设置录音的音量大小
运行的时候可以靠近对着MIC说好,这样就能录音了。运行结果如下图所示:
在这里插入图片描述

图5.2.1.1 rkmedia_ai_test运行打印信息
如果想结束程序,在终端里面按“Ctrl+C”结束程序。查看/tmp/ai.pcm文件有么有数据产生,结果如下图所示:
在这里插入图片描述

图5.2.1.2 ai.pcm的文件查看
5.2.2rkmedia_ao_test
播放PCM格式的音频文件,下表是使用的参数:
在这里插入图片描述

使用方法:

rkmedia_ao_test -i /tmp/ai.pcm
就会播放我们刚刚录的声音了,运行结果如下所示:
在这里插入图片描述

图5.2.2.1 rkmedia_ao_test播放PCM格式的音频
5.2.3 rkmedia_ai_aenc_test
调用录音功能,把输入的音频进行编码支持MP3 、MP2、g711u、g771a和g726(测试发现MP3格式是不能录制的,跟代码发现在调用rkmedia库就报错了,估计是SDK版本问题)。下表是使用的参数:
在这里插入图片描述

使用方法为:

rkmedia_ai_aenc_test -l 1152 -o aenc.mp2
对着MIC说话即可录音,如果想结束程序,在终端里面按“Ctrl+C”结束程序。运行结果如下图所示:
在这里插入图片描述

图5.2.3.1 rkmedia_ai_aenc_test录音MP3格式
在终端里面按“Ctrl+C”结束程序,通过ADB命令把“aenc.mp2”文件拷贝到Windows系统,点播放即可。
5.2.4 rkmedia_adec_ao_test
解码音频文件进行播放,实际测试只支持g711u和g771a,没有办法解码MP2和MP3格式,不知道是不是SDK包的版本太新,以前版本还支持AAC现在已经不支持,查看源码发现,这些MP3、MP2解码结构体都没有定义。
在这里插入图片描述

图5.2.4.1 rkmedia_adec.h头文件
下表是此命令的参数:
在这里插入图片描述

使用方法如下命令:

rkmedia_adec_ao_test -i aenc.g711u -t 3
“-t 3”指定解码格式为g711u。刚刚已经说了实际测试只支持g711u或g711a格式,没有这两种格式的文件,可以使用rkmedia_ai_aenc_test命令进行录制。运行结果如下所示:
在这里插入图片描述

图5.2.4.2 adec音频解码打印信息
5.2.5 rkmedia_vi_get_frame_test
使用此命令前要先退出QT界面(点击设置退出),获取摄像头的数据(VI表示摄像头的输入),保存为NV12格式的视频格式,下表是此命令的参数:
在这里插入图片描述

使用rkmedia_vi_get_frame_test命令测试如下所示:

rkmedia_vi_get_frame_test -a /etc/iqfiles/ -o 1080.nv12
“-a /etc/iqfiles/”正点原子的两款MIPI摄像头的aiq配置文件放到/etc/iqfiles/目录里,所以我们要指定从这个目录去获取摄像头的配置文件,“-o 1080.nv12”指定的输出文件为1080.nv12。如果是接了双目摄像头需要加参数“I”去指定那一个摄像头录制。运行命令如下图所示:
在这里插入图片描述

图5.2.5.1 rkmedia_vi_get_frame_test运行打印信息图
没有指定输出帧数需要按“Ctrl+C”结束测试程序。通过ADB把文件拷贝到Ubuntu系统里面,运行以下命令进行测试:(Ubuntu系统里面必须要安装ffplay命令)
ffplay -f rawvideo -pix_fmt nv12 -video_size 1920x1080 1080.nv12
5.2.6 rkmedia_vi_venc_test
使用此命令前要先退出QT界面(点击设置退出),获取摄像头的数据,通过VENC进行编码成H264/H265/MJPEG格式的文件(VENC是rkmedia一个编码模块),下表是此命令的参数选项(VIVENC):
在这里插入图片描述

使用rkmedia_vi_venc_test命令测试如下所示:

rkmedia_vi_venc_test -a /etc/iqfiles/ -o output.h264
“-a /etc/iqfiles/”正点原子的两款MIPI摄像头的aiq配置文件放到/etc/iqfiles/目录里,所以我们要指定从这个目录去获取摄像头的配置文件,“-o output.h264”指定的输出文件为output.h264。如果是接了双目摄像头需要加参数“I”去指定那一个摄像头录制,可以使用此命令去录制4K视频只需要添加参数“-h 2160 -w 3840”。运行命令如下图所示:
在这里插入图片描述

图5.2.6.1 rkmedia_vi_venc_test运行打印信息图
从图中可以得知视频的默认帧数为30帧,没有指定输出帧数需要按“Ctrl+C”结束测试程序。通过ADB命令把文件拷贝到Ubuntu系统下,使用ffplay进行播放:
ffplay output.h264
rkmedia_vi_vo_test
使用此命令前要先退出QT界面(点击设置退出),获取摄像头的数据,经过RGA处理,显示到屏幕上。本例程需要先退出QT综合界面(设置退出),屏幕为720屏。下表是此命令的参数选项:
在这里插入图片描述

使用rkmedia_vi_vo_test命令测试如下所示:

rkmedia_vi_vo_test -a /etc/iqfiles/
“-a /etc/iqfiles/”正点原子的两款MIPI摄像头的aiq配置文件放到/etc/iqfiles/目录里,所以我们要指定从这个目录去获取摄像头的配置文件。运行命令后可以看出摄像头的数据已经显示到屏幕上,默认为30fps。按“Ctrl+C”结束测试程。
5.2.7 rkmedia_venc_jpeg_test
使用此命令前要先退出QT界面(点击设置退出),获取摄像头的数据,经过VENC编码,在叠加RGA模块设置位图,简单说就是把摄像头的数据给VENC进行编码,用RGA添加彩条,保存为jpeg格式的图片。下表是此命令的参数选项:
在这里插入图片描述

使用rkmedia_venc_jpeg_test命令测试如下所示:

rkmedia_venc_jpeg_test -a /etc/iqfiles/
“-a /etc/iqfiles/”正点原子的两款MIPI摄像头的aiq配置文件放到/etc/iqfiles/目录里,所以我们要指定从这个目录去获取摄像头的配置文件。运行命令后,就会有以下打印信息,如下图所示:
在这里插入图片描述

图5.2.7.1 rkmedia_venc_jpeg_test打印信息
按“ENTER”键即可实现jpeg格式的截图,结束程序可以先按“Ctrl+C”然后按“ENTER”键即可结束程序。结束程序的打印如下图所示:
在这里插入图片描述

图5.2.7.2 结束rkmedia_venc_jpeg_test打印信息图
结束后,在/tmp/目录下生成很多test_jpegX.jpeg文件,拷贝到Ubuntu查看即可。
5.2.8 rkmedia_vi_venc_rtsp_test
使用此命令前需要几个条件:
退出QT界面
安装vlc软件,Windows系统下安装vlc软件,安装包位于开发板光盘A 04、软件 vlc-3.0.18-win64.exe。Ubuntu下运行此命令:sudo apt install vlc。
开发板要接上网线,电脑的网络和开发板的网络处于同一个网段。
使用VI模块去获取摄像头的数据,经过VENC编码,在使用rtsp进行数据的推流。下表是此命令的参数选项:
在这里插入图片描述

需要知道当前开发板的IP地址,使用ifconfig命令去获取IP地址,比如笔者这边的IP地址为192.168.6.111。使用rkmedia_vi_venc_rtsp_test 命令测试如下所示:
rkmedia_vi_venc_rtsp_test -a /etc/iqfiles/
运行后有以下数据打印,如图所示:
在这里插入图片描述

图5.2.8.1 rkmedia_vi_venc_rtsp_test打印信息
上图可以看出有分辨率的大小和fps帧数,可以使用vlc软件,去获取摄像头的数据,打开vlc软件(笔者是在Ubuntu下打开的,Windows上的用法差不多),如下图所示:
在这里插入图片描述

图5.2.8.2 Ubuntu系统下开启vlc
图5.2.8.2中点击“媒体”进入“打开媒体”,如下图所示:
在这里插入图片描述

图5.2.8.3 打开媒体
在图4.2.8.3中“please enter a network URL:” 框架中输入以下链接:
rtsp://192.168.6.111/live/main_stream
这里的IP地址为开发板上的IP地址,如下图所示:
在这里插入图片描述

图5.2.8.4 拉流设置
设置好拉流的地址后,直接点击播放,即可出现摄像头的播放数据,如下图所示:
在这里插入图片描述

图5.2.8.5 拉流视频播放
从上图可以看出,拉流的视频分辨率为:1920x1080@30,数据格式为H264。大家可以修改分辨率。
5.2.9 rkmedia_vi_vo_test
使用此命令前要先退出QT界面(点击设置退出),使用VI获取摄像头的数据,通过接口发送到VO,就能实现显示到屏幕上。下表是此命令的参数选项(VIVO):
在这里插入图片描述

使用命令如下所示:

rkmedia_vi_vo_test -a /etc/iqfiles/
运行结果如下图所示:
在这里插入图片描述

图5.2.9.1 运行rkmedia_vi_vo_test结果
接着我们的显示屏,就能显示摄像头的实时数据。
5.2.10 rkmedia_vi_double_cameras_switch_test
使用此命令前要先退出QT界面(点击设置退出),使用2个VI获取摄像头的数据(双目摄像头的测试需要接两个摄像头),通过接口发送到VMIX,VMIX就会把合成一帧数据,然后把数据发送到VO里,这样就能够显示两个摄像头的数据。下表是此命令的参数选项(VIVMIXVO):
在这里插入图片描述

使用命令如下所示:

rkmedia_vi_double_cameras_test -a /etc/iqfiles/ -u 0
注意:需要选择图层0,这个和drm框架相关。运行结果如下打印:
在这里插入图片描述

图5.2.10 rkmedia_vi_double_cameras_test运行打印

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

激光雷达“进阶战”:谁在引领新风向?

激光雷达正进入新的发展阶段。 高工智能汽车注意到,伴随激光雷达在2022年第一波小规模前装导入,市场正尝试向中端车型渗透,以逐步迈向快速增长期。在这一阶段,谁能解决成本可控、性能提升的难题,同时帮车企用好激光雷…

鸟哥的Linux私房菜——基础学习篇(第三版) (6-10章)

基础学习篇 第六章 :Linux 的档案权限与目录配置第七章 :档案与目录管理第八章 :Linux 磁盘与文件系统管理第九章 :文件与文件系统的压缩与打包第十章 :Vim程序编辑器 第六章 :Linux 的档案权限与目录配置 …

浅述 国产仪器仪表 6121A 音频分析仪

6121A是具有音频信号产生和音频信号分析功能的测试仪器,适用于语音性能测试和音频功放测试等领域,满足电台、移动通信、音响设备和水声通信设备对频响、谐波失真和信噪比等指标的测试需求,是音频信号性能测试的常备仪器。 6121A音频分析仪具…

Hadoop2.x集群搭建(centos7、VMware、finalshell)

第一章 Hadoop集群安装 1.1 集群规划 集群规划规划操作系统Mac、Windows虚拟软件Parallels Desktop(Mac)、VMWare(Windows)虚拟机主机名: c1, IP地址: 192.168.10.101主机名: c2, IP地址: 192.168.10.102主机名: c3, IP地址: 192.168.10.103软件包上传路径/root/softwares软件…

持续集成下接口自动化测试实践

目录:导读 引言 接口自动化测试工具介绍 接口自动化测试在持续集成中的运用 小结 引言 目前很多持续集成项目都需要执行接口层的测试,当你了解其基本概念,理解了接口协议、如何传参、测试原理后,无需 掌握程序语言&#xff0…

【MySQL高级】——目录结构数据库和文件系统的关系

一、目录结构 <1> 主要目录结构 find / -name mysql<2> 数据库文件目录 目录&#xff1a;/var/lib/mysql/ 配置方式&#xff1a;show variables like ‘datadir’; <3> 相关命令目录 目录&#xff1a;/usr/bin&#xff08;mysqladmin、mysqlbinlog、my…

软件著作权申请流程待发放多久就能到已发放拿到纸质证书?

软件著作权申请一般有两种途径 1、代理 代理机构有加急通道&#xff0c;软件著作权交件后最快20-30工作日内出&#xff0c;待发放到已发放只要3工作日拿到就可以邮寄纸质证书给你了。 2、版权中心官网自己登记 流程比较缓慢&#xff0c;而且最要命的是&#xff0c;证书是用邮…

数据划分方法简述:数据离散化和均值标准差分级法(含python代码)

文章目录 1 问题缘起2. 数据离散化等距离散等频离散聚类离散其他 3. 均值标准差分级 1 问题缘起 在数学建模中&#xff0c;我经常遇到这样一个问题&#xff1a; 在某一步中&#xff0c;需要把数据分成好几个类别或者是按照数据大小分级划分。 放到一维数据中形象一点解释就是…

InstructGPT原理讲解及ChatGPT类开源项目

InstructGPT原理讲解及ChatGPT类开源项目 Generative Pre-Trained Transformer&#xff08;GPT&#xff09; 是OpenAI的提出的生成式预训练语言模型&#xff0c;目前已经发布了GPT-1、GPT-2、GPT-3和GPT-4&#xff0c;未来也将发布GPT-5。 最近非常火的ChatGPT是基于Instruct…

【ChatGPT】稳定性好响应速度快可部署到国内服务器的ChatGPT 强力推荐!

朋友们&#xff0c;大家好&#xff0c;我是 jonssonyan。今天分享一个免费开源的 ChatGPT 项目&#xff0c;它的表现无论是响应速度还是稳定性都比 ChatGPT Plus 还要优秀&#xff0c;只需要有个 Access Token 或者使用热心网友提供的共享账号 就可以免费在线体验&#xff0c;也…

Vicuna-13B量化模型单GPU可跑

链接在这&#xff08;需要科学上网&#xff09; Vicuna-13B: Best Free ChatGPT Alternative According to GPT-4 &#x1f92f; | Tutorial (GPU) 有人在B站转了人家的视频 ChatGPT&#xff1a;在你的本地电脑上运行Vicuna-13B &#x1f92f;|教程 (GPU) 下面就是部署的步骤…

023 - C++ 继承

本期我们学习 C 面向对象编程中的继承。 面向对象编程是一个巨大的编程范式&#xff0c;类之间的继承是它的一个基本面&#xff0c;它是我们可以实际利用的最强大的特性之一。 先了解这些 继承允许我们有一个相互关联的类的层次结构。展开来说&#xff0c;它允许我们有一个包…

Ceph入门到精通-Ceph介绍及放置规范

2.cephadm介绍 2.1cephadm介绍 Cephadm 是随着 Ceph 新版本 v15.2.0(Octopus)发布的安装工具&#xff0c;并且不支持 Ceph的旧版本&#xff0c;Ceph中已经Cephadm 不依赖于外部配置工具&#xff0c;如 Ansible、 Rook 和 Salt&#xff0c;它通过 SSH 将管理器守护进程连接到主机…

通信中间件

通信中间件需要解决什么问题 分布式系统中两个不同的系统需要进行通信的时候&#xff0c;使用的是scocket编程&#xff0c;需要直接面对网络中的四层模型&#xff0c;编程时需要确定目标端的详细物理地址。这是非常不方便的。为了解决这个问题&#xff0c;需要通信中间件来屏蔽…

Linux系统编程学习 NO.1 ——操作系统的历史发展

什么是操作系统&#xff1f; 首先&#xff0c;需要明白一个概念操作系统的本质是系统软件&#xff0c;我们平时在电脑上的界面就是一种图形化的操作系统界面。界面上通常安装可执行应用程序如QQ&#xff0c;wps等等&#xff0c;这些应用程序被称为应用软件。大家买的电脑其实是…

【Java实战篇】Day14.在线教育网课平台--消息队列实现异步通知

文章目录 一、需求&#xff1a;支付通知1、需求分析2、技术方案3、集成RabbitMQ4、生产端发送消息5、消费方发送消息 二、需求&#xff1a;在线学习1、需求分析2、表设计与实体类3、接口定义--查询课程4、接口定义获取视频5、Service层开发6、FeignClient定义7、代码完善 三、需…

HOG+SVM分类器实践

文章目录 HOGSVM分类器实践制作SVM分类器导入所需的库提取HOG特征读取正样本和负样本训练分类器定义主函数小结 测试SVM分类器相关疑问1. 提取HOG特征为什么不能彩色图像呢&#xff1f;2. 出现如下错误3. 测试代码中&#xff0c;当我传入100*100的图片时候&#xff0c;为什么im…

Linux下安装Java8环境

查看主机是否已经安装Java环境 java -version 如下图所示&#xff0c;未找到java命令&#xff0c;则需要安装Java环境 JDK官网下载&#xff1a; https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 根据自己系统的位数下载相应版本…

基于Dokcer安装RabbitMQ

基于Dokcer安装RabbitMQ 一、RabbitMQ介绍 1.1 现存问题 服务调用&#xff1a;两个服务调用时&#xff0c;我们可以通过传统的HTTP方式&#xff0c;让服务A直接去调用服务B的接口&#xff0c;但是这种方式是同步的方式&#xff0c;虽然可以采用SpringBoot提供的Async注解实现…

第6章:集合

集合简介 一种无序且唯一的数据结构。不关心顺序&#xff0c;集合里面的元素都是唯一的。 栈&#xff0c;队列&#xff0c;链表他们里面都有可能出现重复的数据&#xff0c;但是集合里面的元素是唯一的。 栈&#xff0c;队列&#xff0c;链表它们都有自己的顺序&#xff0c;但是…