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

rk3568之mpp开发笔记怎么实现mpp编码摄像头实时码流?

前言:

大家好,今天给大家分享的内容是在rk3568上,通过mpp来进行实时对摄像头imx415采集的码流数据进行编码成h264或者h265,后期文章,会开发测试一下通过rtsp推流出去,然后电脑端拉流,看一下整个环路的延迟多大,会采用slice的方式去进行编码,mpp编码器有类似的配置。

ok,我们开始今天的内容!

怎么找到摄像头视频节点?

首先要明白为啥要找到摄像头的视频节点,毫无疑问,上层要能够访问摄像头,必须通过驱动层生成的设备节点,上层才可以进行操作,所以我们该怎么判断哪个视频节点(/dev/videoX)是我们需要的呢?

ok,我们可以通过下面可以看到:

07a9333cb396a14a65db78838117b89c.png

/dev/media0 和/dev/v4l-subdev0~3、/dev/video0~9等这些都是和摄像头相关的设备节点。

这里考察一下大家,/dev/v4l-subdev和/dev/video有什么区别?

那么我们回到刚才的问题,哪个/dev/videoX是我们需要的,我们可以通过media-ctrl控件来打印查看拓扑结构,这里注意,因为我现在接入了一个摄像头imx415,所以就只有一个媒体设备节点/dev/media0,那么通过下面的命令,我们来看一下整个摄像头的拓扑结构:

media-ctl -p -d /dev/media0

8cf22c99433d7b6802fcb3732be168b6.png90f45cc9ca96a487c9c9aa2f786fde7a.png

我们可以从这个拓扑图来看, entity 76是imx415摄像头注册成功的标识,然后我们可以看到摄像头/dev/vedieo0~9,其中/dev/video0和/dev/video1是我们需要的节点,其他节点暂时用不到:d907b04382e1740cf7f7fb268803881e.png

主要上面截图中中的rkisp_mainpath和rkisp_selfpath这代表什么意思,其实这个mainpath和selfpath在整个rk平台简称叫做:

  • MP,即Main Path,指Rockchip ISP驱动的一个输出节点,可输出高分辨率图像,一般用来拍照,抓取Raw图

  • SP,即Self Path,指Rockchip ISP驱动的一个输出节点,最高只能输出1080p分辨率

开始mpp编码:

有了上面的基础作为铺垫,我们开始来进行测试编码h264和h265:

首先来测试一下h264编码,分辨率大小位1080-30fps,视频节点/dev/video0:

880feca9aa68332c32f6e177e9c07397.png用potplay看一下效果:

0ed1f9cd8ac15a05821733c946f1b3ff.jpeg再来测试一下h264编码,分辨率大小位4k-30fps,视频节点/dev/video0:

7f4c0afbafe7b24b7db295cb1495f4e7.png看一下效果:

8a3cb6ab79bbe48c8b0c9283b246d8c6.jpeg

接着来测试一下h265编码,分辨率大小位1080-30fps,视频节点/dev/video0:

ab39c2fab65a52f43b817aee03ebeca7.png
mpi_enc_test -w 1920 -h 1080 -t 16777220 -i /dev/video0 -o ./out.h265
3c1a799051894bd258401d08ec5016f6.png

播放效果:

e565afffbbf940285be69585c2f1b8fe.jpeg

总结:

我们可以看到rk的mpp编码支持h264、h265、vp8/vp9、jpeg、avs等相关编码标准,更多的测试,大家可以去感受一下!

同时mpp编码实时流到底怎么实现的,我们下期内容来揭晓,敬请期待!


http://www.kler.cn/a/447997.html

相关文章:

  • 将HTML转换为PDF:使用Spire.Doc的详细指南(一) 试用版
  • 项目中如何排查JVM问题?
  • 冯诺依曼架构与哈佛架构的对比与应用
  • React简单了解
  • Nginx的stream模块代理四层协议TCP的流量转发
  • 【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap
  • 换工作,如何退出微软账户???(删除注册表数据)
  • powerhsell 初认识
  • 252-8路SATAII 6U VPX高速存储模块
  • 一个类就创建Json反序列化所需的属性
  • golang,gowork工具
  • UI自动化概念+Web自动化测试框架
  • 第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
  • CE之植物大战僵尸植物无冷却
  • 60.基于SSM的个人网站的设计与实现(项目 + 论文)
  • HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发
  • simulink离散传递函数得到差分方程并用C语言实现
  • 二叉树_堆
  • 实验二 组合逻辑电路部件实验
  • 青少年编程与数学 02-004 Go语言Web编程 07课题、WebSockets
  • 【java 正则表达式 笔记】
  • 机器学习零基础小白指南---- 线性代数入门
  • 生态学研究中,森林生态系统的结构、功能与稳定性是核心研究
  • Go语言中context 结构原理, 使用场景和用途
  • kotlin中泛型中in和out的区别
  • 使用qemu搭建armv7嵌入式开发环境