OpenHarmony开源社区
直播中

羁傲不驯

3年用户 24经验值
擅长:嵌入式技术
私信 关注
[经验]

【ROC-RK3568-PC开发板试用体验】RK356*平台rockit视频处理接口

众所周知,RK平台的视频接口与通用Linux视频接口有略微出入,不能兼容,如Opencv不能使用标准V4L2接口打开摄像头、编解码使用mpp框架等。

但是RK也将自己所作的工作对其到常用的LInux 开源软件上,比如gstreamer、ffmpeg等,熟悉这些的朋友可以参考RK的文档开使用如上接口可以快速进行视频相关通路的开发。

什么是rockit?有什么作用?

rockit是rockchip多媒体处理平台对外应用接口。它提供了两种对外框架。分别是mpi和tgi。

Rockit定位于通用媒体pipeline, 将常用媒体组件插件化,以积木化的方式构建灵活的应用pipeline。开发者借助Rockit可以开发丰富的媒体应用。

rockit框架的具有以下特性:

  • 稳定的操作接口抽象。
  • 稳定的媒体接口抽象。将平台媒体接口转换为通用媒体接口。
  • 稳定的插件抽象。
  • 支持通用插件管理(TaskGraph)。插件组装,数据传递和控制等。
  • 支持多种媒体应用开发。

也就是它可以像gstreamer一样,通过插件合理的控制每一个 系统的数据流向,从而进行多媒体应用的开发。鉴于tgi倾向于多媒体应用场景开发,我们本次只为作为一个小小的例子,调用剥离开来的mpi接口来实现一个简单的demo开发。

MPI接口将板卡中所的音视频处理器及设备均抽象出来:

该平台整合了RK的硬件资源,对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供接口完成相应功能。该平台支持应用软件快速开发以下功能:输入视频捕获、H.265/H.264/JPEG 编码、H.265/H.264/JPEG 解码、视频输出显示、视频图像前处理(包括裁剪、缩放、旋转)、智能、音频捕获及输出、音频编解码等功能

它的系统架构如下:

两种典型应用场景中分别如下:


下面介绍一下我的项目:我的项目是一个典型的IPC项目:
BedRockJie/Rockchip_camera_encoder_Networkput (github.com)

实现在RK平台上对Video的采集编码并推流的过程,可以在桌面VLC中拉流播放显示摄像头画面,具体代码实现可以看仓库中:vi_encoder_push

下期介绍如何快速使用和上手创建自己的项目(基于RK框架或剥离框架自己玩)

回帖(2)

温暖镜头

2022-9-13 11:02:42
点赞
1 举报

jf_95472132

2022-11-24 17:38:49
编译的时候提示glibc出错,我这边cmake用的是3.10.2.具体错误如下:
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘stat64@GLIBC_2.33’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘fstat64@GLIBC_2.33’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘dladdr@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockit.so:对‘std::_Sp_make_shared_tag::_S_eq(std::type_info const&)@GLIBCXX_3.4.26’未定义的引用
encoder/../lib/rockit/lib/librockit.so:对‘fcntl64@GLIBC_2.28’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘dlclose@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockchip_mpp.so.0:对‘sem_post@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockchip_mpp.so.0:对‘log2@GLIBC_2.29’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘pthread_mutexattr_init@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockchip_mpp.so.0:对‘sem_destroy@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘pthread_join@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockchip_mpp.so.0:对‘pthread_setname_np@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘pthread_mutex_trylock@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockit.so:对‘exp2@GLIBC_2.29’未定义的引用
encoder/../lib/rockit/lib/librockit.so:对‘log@GLIBC_2.29’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘dlsym@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockchip_mpp.so.0:对‘sem_wait@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘dlopen@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘pthread_mutexattr_settype@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘pthread_once@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockit.so:对‘exp@GLIBC_2.29’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘pthread_create@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockchip_mpp.so.0:对‘sem_init@GLIBC_2.34’未定义的引用
encoder/../lib/rockit/lib/librockit.so:对‘pow@GLIBC_2.29’未定义的引用
encoder/../lib/rockit/lib/libasound.so.2.0.0:对‘pthread_mutexattr_destroy@GLIBC_2.34’未定义的引用
collect2: 错误: ld 返回 1
CMakeFiles/Bedrock_encoder.dir/build.make:102: recipe for target 'Bedrock_encoder' failed
make[2]: *** [Bedrock_encoder] Error 1
CMakeFiles/Makefile2:69: recipe for target 'CMakeFiles/Bedrock_encoder.dir/all' failed
make[1]: *** [CMakeFiles/Bedrock_encoder.dir/all] Error 2
举报

更多回帖

发帖
×
20
完善资料,
赚取积分