RV1126采集VI视频数据流

  • 本章节内容

这个章节主要是讲解如何通过RKMEDIA的API获取RV1126的VI视频流,虽然这部分在之前的课程里面讲解了很多次,但还是要带着大家回顾一下这部分代码。

  • 采集VI数据的代码实现

2.1. VI模块的初始化并使能

上图是VI模块的初始化,这部分的代码之前讲解过很多次了。这里需要设置VI_CHN_ATTR_S的结构体参数,这些参数包括:

****id:****VI模块的id号,用于初始化和使能VI模块

pcVideoNode: 摄像头的视频节点,这里默认是rkispp_scale0

****u32BufCnt:****缓冲区计数,默认是3

****u32Width:****VI模块分辨率宽度1920

****u32Height:****VI模块分辨率高度1080

****enPixFmt:****图像格式默认是NV12,这里填的是IMAGE_TYPE_NV12

****enBufType:****VI模块捕捉视频的类型,这里默认填写MMAP

****enWorkMode:****VI工作模式,这里写的是VI_WORK_MODE_NORMAL

设置完上述参数之后,则调用RK_MPI_VI_SetChnAttr 去设置VI模块,设置完VI模块则需要对其进行使能。使能的API是RK_MPI_VI_EnableChn。

2.2. 启动VI模块进行摄像头数据的采集

上述代码是启动VI模块进行摄像头采集,这里使用的API是RK_MPI_VI_StartStream。

2.3. 创建多线程获取VI码流数据并传输到RGA模块

初始化VI模块后,则需要创建get_camera_vi_thread 线程去获取VI码流数据并发送到RGA模块(RGA的作用下节课讲)。这个线程需要使用RK_MPI_SYS_GetMediaBuffer死循环获取VI码流的数据,这里的模块号是RK_ID_VI,通道号是CHN_ID:0,第三个参数:-1阻塞获取。

获取了每一帧的VI数据后,则调用RK_MPI_SYS_SendMediaBuffer 的API把每一帧VI数据发送到RGA模块,第一个参数:模块号ID(RK_ID_RGA )、第二个参数:通道号ID(这里填0,因为RGA模块创建的通道号是0)、第三个参数:VI码流的缓冲数据。发送完每一帧VI码流数据之后,则释放资源RK_MPI_MB_ReleaseBuffer。

相关推荐
小猴子爱上树12 小时前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频
jsons112 小时前
autofs挂载
linux·服务器·网络
liwulin050613 小时前
【ollama】自定义结构化输出
linux·前端·数据库·ollama
AI创界者13 小时前
【AI视频重塑】MoCha-GGUF 视频人物/主体替换整合包:8G显存轻量化部署与ComfyUI批量工作流详解
人工智能·aigc·音视频
gs8014013 小时前
【实战】记一次 Linux 服务器入侵排查:grok-agent 后门木马深度剖析与彻底清理
linux·运维·服务器
时空无限14 小时前
vllm 大模型启动缓存相关环境变量 export
linux·缓存·vllm
Echo_cy_14 小时前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
ShineWinsu14 小时前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket
做个文艺程序员14 小时前
Linux第27篇:在Linux服务器部署本地大模型:Ollama+开源LLM实战
linux·服务器·开源·大模型·ollama
无足鸟ICT15 小时前
【RHCA+】查看变量
linux·运维·服务器