一个强大的音视频编解码库-rkmedia的应用

简介: 一个强大的音视频编解码库-rkmedia的应用

前面写了对RV1109开发官方资料的补充文章:


瑞芯微RV1109配置7寸电容触摸屏的方向修改笔记


如何添加APP到Buildroot里(以瑞芯微rv1126为例)


瑞芯微RV1109配置GPIO设备树修改笔记(熟悉新平台从点灯大法开始)


对RV1109及瑞芯微平台感兴趣的读者,请自行到文末下载SDK:

640.png

RKMedia提供了一种媒体处理方案,可支持应用软件快速开发。RKMedia在各模块基础API上做进一步封装,简化了应用开发难度。该平台支持以下功能:VI(输入视频捕获)、VENC(H.265/H.264/JPEG/MJPEG 编码)、VDEC(H.265/H.264/JPEG、MJPEG 解码)、VO(视频输出显示)、RGA视频处理(包括旋转、缩放、裁剪)AI(音频采集)、AO(音频输出)、AENC(音频编码)、ADEC(音频解码)、MD(移动侦测)、OD(遮挡侦测)。(摘自RKmedia手册)


rkmedia 框架源码:

external/rkmedia/src

例程:

external/rkmedia/examples
链接:https://pan.baidu.com/s/1yJYKn6KtUYV4pRMFGKA37Q 
提取码:w5ig 
--来自百度网盘超级会员V1的分享

SDK中的参考文档:

640.png

1、external/rkmedia/doc
2、docs/RV1126_RV1109/Multimedia/Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf
3、docs/RV1126_RV1109/Multimedia/Rockchip_Instructions_Linux_Rkmedia_CN.pdf

rkmedia 总体框架图如下:

640.png


640.png

那么在我自己的板子上如何来使用rkmedia的应用程序呢?

1、Camera翻转原理和实现

1.1、修改dts实现Sensor翻转

在编写demo前需要修改kernel的dts,我购买的是7寸1024*600的mipi接口显示屏以及mipi接口的gc2093摄像头sensor,由于我想要的是竖屏实现摄像头预览,所以就必须修改对应的kernel dts:


  • 修改Camera Sensor dts
vim kernel/arch/arm/boot/dts/rongpin/camera-gc2093x2.dtsi

修改 hflip 属性:

640.png

hflip 表示的是水平翻转的意思,设置为0或者设置为1是什么意思呢?打开 GC2093 Datasheet ,搜 索 flip ,我们可以看到:

640.png

也就是说找到这个0x0017这个寄存器,往这里面写入对应的数值(0或1)即可看到相应的效果,GC2093的驱动代码在Linux内核里也是有提供的,位于:

vim kernel/drivers/media/i2c/gc2093.c

640.png

那么肯定有操作旋转的方法,我们往下查找即可看到:

640.png

到这里我们就彻底明白了,驱动程序通过访问设备树,获取节点 vfliphflip ,然后通过of_property_read_u32 函数将该节点对应的数值转化为无符号整型,取出数值后,将该数值写入寄存 器 0x0017 来达到水平、垂直翻转的效果。

1.2、重新编译kernel

./build.sh kernel && ./build.sh firmware

640.png

生成镜像路径:

rockdev/

生成镜像:

boot.img

将 boot.img 通过瑞芯微开发工具重新下载更新到开发板上即可。

640.png

2、基于rkmedia编写应用程序

2.2、摄像头竖屏实时预览

自己参考实现的源代码: camera_display_test.c

链接:https://pan.baidu.com/s/1yJYKn6KtUYV4pRMFGKA37Q 
提取码:w5ig 
--来自百度网盘超级会员V1的分享

在荣品RV1109开发平台上实现竖屏摄像头LCD预览效果

640.png

640.png

2.3、摄像头实时预览 & RTSP本地同步推流

自己参考实现的源代码: camera_display_rtsp_test.c

链接:https://pan.baidu.com/s/1yJYKn6KtUYV4pRMFGKA37Q 
提取码:w5ig 
--来自百度网盘超级会员V1的分享

在荣品RV1109开发平台上实现竖屏摄像头LCD预览以及同步RTSP本地推流效果:

640.png

3、将自己编写的应用程序放到examples目录下

external/rkmedia/examples/

然后切换到rkmedia例程目录下:

cd external/rkmedia/examples/

4、在CMakeLists.txt中添加例程编译信息

#--------------------------
# camera_display_test.c
#--------------------------
add_executable(camera_display_test camera_display_test.c ${COMMON_SRC})
add_dependencies(camera_display_test easymedia)
target_link_libraries(camera_display_test easymedia)
target_include_directories(camera_display_test PRIVATE
${CMAKE_SOURCE_DIR}/include)
install(TARGETS camera_display_test RUNTIME DESTINATION "bin")
#--------------------------
# camera_display_rtsp_test.c
#--------------------------
link_directories(${PROJECT_SOURCE_DIR}/librtsp/)
add_executable(camera_display_rtsp_test camera_display_rtsp_test.c
${COMMON_SRC})
add_dependencies(camera_display_rtsp_test easymedia)
target_link_libraries(camera_display_rtsp_test easymedia rtsp)
target_include_directories(camera_display_rtsp_test PRIVATE
${CMAKE_SOURCE_DIR}/include)
install(TARGETS camera_display_rtsp_test RUNTIME DESTINATION "bin")

5、重新编译rkmedia

640.png

640.png

编译完成,由于是基于buildroot架构进行编译,所以将buildroot下output下对应平台生成的bin文件拷贝到开发板上即可运行。


RV1109 SDK源码及文档:

640.png

链接:https://pan.baidu.com/s/1QKkQ3SKwuaTImnH3CbpYkg 
提取码:5sg0

往期精彩

全志A64 设备树里的gpio应用开发


如何添加APP到Buildroot里(以瑞芯微rv1126为例)


Buildroot系统构建学习笔记(以百问网imx6ull开发板为例)


瑞芯微RV1109配置7寸电容触摸屏的方向修改笔记


瑞芯微RV1109配置GPIO设备树修改笔记(熟悉新平台从点灯大法开始)

目录
相关文章
|
2月前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
61 11
|
6月前
|
数据采集 数据挖掘 Python
|
4月前
|
Shell 数据库 Python
安装graphene库
安装graphene库
|
前端开发
24 # co 库的实现
24 # co 库的实现
49 0
|
Windows
paddleoffice库介绍
paddleoffice库介绍
150 0
paddleoffice库介绍
|
C++ Windows
VS2010下安装和使用STLport库
VS2010下安装和使用STLport库
341 0
VS2010下安装和使用STLport库
|
Python 数据格式 XML
eleme 项目使用到的库
探索eleme用到的库 xml re库 通过regex = re.compile(pattern)返回一个pattern对象, 通过该对象匹配正则表达式的字符串, 最好在模式中使用r'some'原始字符串 regex有很多的方法, 最常用的就是findall(), 因为这个方法返回的是一个字符串列...
1009 0