Linux_26:获取高低分辨率码流
1.高分辨率通过camera_venc_thread线程获取高分辨率(1920 * 1080)的编码码流数据并且把编码码流插入到高分辨率编码码流队列里面。上图就是camera_venc_thread线程获取高分辨率编码码流的大体流程我们要从VI节点容器和VENC节点容器里面获取到对应的VI节点和VENC节点然后调用RK_MPI_SYS_Bind这个API绑定VI节点和VENC节点。然后创建camera_venc_thread线程获取高分辨率VENC码流然后入到HIGH_VIDEO_QUEUE队列。这部分代码的实现在rkmedia_assignment_manage.cpp和rkmedia_data_process.cpp这两个源文件里面。2.camera_venc_thread线程的思维导图上图是获取1920 * 1080视频编码数据的思维导图整个流程最关键是get_vi_container获取VI节点get_venc_container获取VENC节点然后调用RK_SYS_MPI_Bind绑定VI和VENC节点并启动camera_venc_thread线程获取编码数据赋值到video_data_packet_t结构体然后入队列。3.camera_venc_thread代码截图并讲解上面三个图就是关于camera_venc_thread整个流程我们首先要通过get_vi_container从VI容器里面获取到VI节点然后再调用get_venc_container从venc容器里面获取venc节点。利用RK_MPI_SYS_Bind把VI节点和VENC节点绑定起来绑定起来后创建camera_venc_thread线程从这个线程里面获取1920 * 1080的编码码流数据。调用的API是RK_MPI_SYS_GetMediaBufferMOD_ID是RK_ID_VENC, CHN_ID是创建的VENC的CHNID来直接获取高分辨率的VENC码流数据并且把数据拷贝到video_data_packet_t结构体包括每一帧的视频流数据RK_MPI_GetPtr(mb)还有每一帧的视频长度RK_MPI_GetSize(mb)。然后把整个video_data_packet包入队high_video_queue-putVideoPacketQueue里面。video_data_packet_t结构体里面有两个成员变量一个是buffer(视频缓冲区)、video_frame_size是每一帧视频的长度frame_flag关键帧标识符。下面是RKMEDIA_BUFFER赋值到VIDEO_DATA_PACKET_T的核心代码memcpy(video_data_packet-buffer, RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetSize(mb));video_data_packet-video_frame_size RK_MPI_MB_GetSize(mb);4.低分辨率本章节主要介绍如何通过get_rga_thread线程和low_camera_venc_thread共同获取低分辨率(1280 * 720)的编码码流并且入队列。从上图我们可以看出。我们经过几个步骤首先要调用get_vi_container获取VI节点然后把VI节点和RGA节点绑定起来通过get_rga_thread线程获取1280 * 720的原始数据并把1280 * 720的原始数据发送到1280 * 720的VENC低分辨率编码器。5.低分辨率码流获取的思维导图上图是获取低分辨率1280 * 720编码码流的思维导图从上面的思维导图可以看出来整个流程最关键是get_vi_container获取VI节点然后调用RK_SYS_MPI_Bind绑定VI和RGA节点。然后创建get_rga_thread线程获取每一帧rga的1280 * 720的视频原始数据调用的API是RK_MPI_SYS_GetMediaBuffer获取每一帧1280 * 720原始数据后再调用RK_MPI_SYS_SendMediaBuffer发送每一帧原始数据到1280 * 720的VENC编码器。创建low_camera_venc_thread线程获取每一帧1280 * 720的编码码流数据调用的API是RK_MPI_SYS_GetMediaBuffer。获取完每一帧1280 * 720编码视频数据后存放到low_video_queue里面调用的函数是putVideoPacketQueue。6.代码架构截图并讲解上面的截图就是如何通过get_rga_thread和low_camera_thread线程的结合获取低分辨率(1280 * 720)的编码码流。首先要通过RGA的节点和VENC的节点进行RK_SYS_MPI_Bind绑定然后开启get_rga_thread获取每一帧的RGA处理过后的1280 * 720原始数据并且调用RK_MPI_SYS_SendMediaBuffer这个API把每一帧1280 * 720的原始数据发送到低分辨率的编码器里面核心代码如下。while (1){mb RK_MPI_SYS_GetMediaBuffer(RK_ID_RGA, 0 , -1); //获取每一帧RGA处理过后的数据if(!mb){break;}RK_MPI_SYS_SendMediaBuffer(RK_ID_VENC, 1, mb); //把每一帧RGA数据传输到低分辨率VENC里面RK_MPI_MB_ReleaseBuffer(mb); //释放资源}然后再创建low_camera_thread现成获取每一帧1280 * 720的编码视频数据然后把每一帧低分辨率的编码数据赋值到video_data_packet_t结构体,包括每一帧的视频流数据RK_MPI_GetPtr(mb)还有每一帧的视频长度RK_MPI_GetSize(mb)。然后把整个video_data_packet包入队low_video_queue-putVideoPacketQueue里面。video_data_packet_t结构体里面有两个成员变量一个是buffer(视频缓冲区)、video_frame_size是每一帧视频的长度frame_flag关键帧标识符。下面是RKMEDIABUFFER赋值到VIDEO_DATA_PACKET_T的核心代码memcpy(video_data_packet-buffer, RK_MPI_MB_GetPtr(mb), RK_MPI_MB_GetSize(mb));video_data_packet-video_frame_size RK_MPI_MB_GetSize(mb);

相关新闻

海景美女图-一丹一世界FLUX.1效果对比:512vs768vs1024分辨率实测

海景美女图-一丹一世界FLUX.1效果对比:512vs768vs1024分辨率实测

海景美女图-一丹一世界FLUX.1效果对比:512vs768vs1024分辨率实测 1. 引言:分辨率,到底选哪个好? 如果你用过AI画图工具,肯定遇到过这个纠结:生成图片时,分辨率到底该选多少? 选51…

2026/7/9 4:24:58 阅读更多 →
通义千问3-Reranker-0.6B开源可部署:替代商业rerank服务的降本增效方案

通义千问3-Reranker-0.6B开源可部署:替代商业rerank服务的降本增效方案

通义千问3-Reranker-0.6B开源可部署:替代商业rerank服务的降本增效方案 1. 为什么你需要一个轻量级重排序模型 你是否遇到过这样的问题:检索系统返回了100个候选文档,但真正相关的可能只在第5、第12或第37位?传统向量检索&#…

2026/7/9 3:09:06 阅读更多 →
杰理之切换mute mic 功能办法【篇】

杰理之切换mute mic 功能办法【篇】

默认数字音量节点

2026/7/9 9:57:55 阅读更多 →

最新新闻

DC-DC升压转换系统设计与MKV58微控制器应用

DC-DC升压转换系统设计与MKV58微控制器应用

1. 高电压DC-DC升压转换系统架构解析MKV58F1M0VLQ24微控制器与TPS61170的组合,构成了一个典型的数字控制型开关电源系统。MKV58作为主控芯片,通过PWM输出和ADC采样实现对TPS61170的闭环控制,这种架构在工业电源、医疗设备等对电压精度要求较高…

2026/7/9 14:14:01 阅读更多 →
PIC18F4553与CMT-8540S-SMT蜂鸣器的音频交互方案

PIC18F4553与CMT-8540S-SMT蜂鸣器的音频交互方案

1. 项目概述:为DIY项目添加声音交互的硬件方案在智能硬件和互动装置开发中,声音反馈是最直接的用户交互方式之一。PIC18F4553微控制器搭配CMT-8540S-SMT磁性蜂鸣器的组合,为各类电子项目提供了经济高效的音频解决方案。这个方案特别适合需要警…

2026/7/9 14:12:00 阅读更多 →
STM32F303VE驱动EPT-14A4005P的智能警报系统设计

STM32F303VE驱动EPT-14A4005P的智能警报系统设计

1. 项目概述:基于STM32F303VE与EPT-14A4005P的智能警报系统设计 警报系统在工业控制、安防监控和智能家居等领域扮演着关键角色。传统蜂鸣器在复杂环境中的穿透力往往不足,而专业级警报模块又存在成本过高的问题。本项目采用STM32F303VE微控制器驱动EPT-…

2026/7/9 14:12:00 阅读更多 →
如何快速解决Xcode版本不兼容问题:iOS开发者磁盘映像完整指南

如何快速解决Xcode版本不兼容问题:iOS开发者磁盘映像完整指南

如何快速解决Xcode版本不兼容问题:iOS开发者磁盘映像完整指南 【免费下载链接】Xcode_Developer_Disk_Images 项目地址: https://gitcode.com/gh_mirrors/xc/Xcode_Developer_Disk_Images 当你的iOS设备升级到新系统,但Xcode却提示缺少对应的开发…

2026/7/9 14:12:00 阅读更多 →
BilibiliDown:3步搞定B站视频批量下载与高品质音频提取的终极方案

BilibiliDown:3步搞定B站视频批量下载与高品质音频提取的终极方案

BilibiliDown:3步搞定B站视频批量下载与高品质音频提取的终极方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/g…

2026/7/9 14:09:54 阅读更多 →
TLA2518与MK64FN1M0VDC12构建高精度ADC系统实战

TLA2518与MK64FN1M0VDC12构建高精度ADC系统实战

1. 项目背景与核心需求 在工业自动化、医疗设备和消费电子等领域,模拟信号到数字信号的可靠转换一直是系统设计的关键环节。TLA2518作为德州仪器推出的一款12位精度、1MSPS采样率的8通道ADC芯片,配合NXP的MK64FN1M0VDC12(基于ARM Cortex-M4内…

2026/7/9 14:09:54 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻