众所周知,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框架或剥离框架自己玩)
|