RTSP|RTMP流如何指定坐标位置和分辨率获取RGB数据实时渲染和算法分析
接上一篇blog:同一路RTSP|RTMP流如何同时回调YUV和RGB数据实现渲染和算法分析-CSDN博客
我们知道,由于解码后的YUV或RGB数据size比较大,如果想把转换后的RGB数据传给比如python算法的话,数据量还是挺大,为此,开发者提出这样的技术诉求,是不是可以按照指定的坐标和宽高,给出RGB数据,毕竟他们知道哪块区域是需要做算法分析的。
针对此种情况,我们的设计如下:
/** SmartPlayer.cs* Author: https://daniusdk.com* WeChat: xinsheng120*/int x = 100;
int y = 100;
int clip_width = 960;
int clip_height = 540;if (x < 0 || y < 0)return;clip_width = (int)ByteAlign((UInt32)clip_width, 2);
clip_height = (int)ByteAlign((UInt32)clip_height, 2);if (x + clip_width > video_frame.width_ || y + clip_height > video_frame.height_)return;rgb_frame.format_ = (int)NT.NTSmartPlayerDefine.NT_SP_E_VIDEO_FRAME_FORMAT.NT_SP_E_VIDEO_FRAME_FORMAT_ARGB;
rgb_frame.width_ = clip_width;
rgb_frame.height_ = clip_height;rgb_frame.timestamp_ = video_frame.timestamp_;
rgb_frame.stride0_ = clip_width * 4;
rgb_frame.stride1_ = 0;
rgb_frame.stride2_ = 0;
rgb_frame.stride3_ = 0;Int32 argb_size = rgb_frame.stride0_ * rgb_frame.height_;rgb_frame.plane0_ = Marshal.AllocHGlobal(argb_size);IntPtr in_plane0 = video_frame.plane0_ + video_frame.stride0_ * y + x;
IntPtr in_plane1 = video_frame.plane1_ + video_frame.stride1_ * (y / 2) + (x / 2);
IntPtr in_plane2 = video_frame.plane2_ + video_frame.stride2_ * (y / 2) + (x / 2);NTSmartPlayerSDK.NT_SP_I420ToARGB(in_plane0, video_frame.stride0_, in_plane1, video_frame.stride1_, in_plane2, video_frame.stride2_,rgb_frame.plane0_, rgb_frame.stride0_, clip_width, clip_height);
比如我们需要截取的坐标x 100, y 100, 宽 960 高 540,那么处理后的数据,展示出来效果如右图:
左侧是原始的2560*1440的,右侧是按设定坐标,截取960*540分辨率的数据播放的,右侧的数据,投递给python或其他视觉算法,处理效率会显著提升。
以上是回调YUV数据的同时,按照用户使用场景,截取指定坐标和分辨率的RGB数据的设计参考。感兴趣的开发者,可以单独跟我沟通探讨。
相关文章:

RTSP|RTMP流如何指定坐标位置和分辨率获取RGB数据实时渲染和算法分析
接上一篇blog:同一路RTSP|RTMP流如何同时回调YUV和RGB数据实现渲染和算法分析-CSDN博客 我们知道,由于解码后的YUV或RGB数据size比较大,如果想把转换后的RGB数据传给比如python算法的话,数据量还是挺大,为此ÿ…...

基于ssm+vue+uniapp的英语学习交流平台小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
如何判断一个TimerTask是否已经完成
如何判断一个TimerTask是否已经完成 判断TimerTask是否已经完成并不是TimerTask或Timer类直接提供的功能,因为TimerTask一旦被提交给Timer执行,它就在一个独立的线程中运行,而Timer类并不直接提供方法来查询或控制任务的执行状态。 然而&am…...
Android常用面试题
1、如何理解Java的多态?其中,重载和重写有什么区别? 2、谈一下JVM内存区域划分?哪部分是线程公有的,哪部分是私有的? 3、final关键字的用法? 4、死锁是怎么导致的?如何定位死锁 5、数…...

JSON与Jsoncpp库:数据交换的灵活选择
目录 引言 一.JSON简介 二. Jsoncpp库概述 三. Jsoncpp核心类介绍 3.1 Json::Value类 3.2 序列化与反序列化类 四. 实现序列化 五. 实现反序列化 结语 引言 在现代软件开发中,数据交换格式扮演着至关重要的角色。JSON(JavaScript Object Notati…...
salesforce rich text 字段支持html中内嵌JavaScript吗
Salesforce 的富文本字段(Rich Text Field)不支持在 HTML 中内嵌 JavaScript。为了安全,Salesforce 会自动移除或过滤用户输入中的任何 JavaScript 代码。这是为了防止跨站点脚本(XSS)攻击,从而保护 Salesf…...

Ubuntu24.04、22.04或20.04安装Golang方法教程
在Ubuntu Linux(例如 Ubuntu 24.04、22.04 或 20.04)上安装Go(Golang)是一个简单的过程。我们可以使用默认系统存储库使用本教程中给出的命令下载开源 Go 编程语言,轻松构建简单、可靠和高效的软件。 Go语言由Google…...
学习记录第二十二天
time函数与localtime函数 在Linux环境下使用C语言处理时间,通常会涉及到几个重要的头文件和函数。主要的头文件是 <time.h>,它包含了处理时间的各种函数和数据结构。 1. 数据结构 1.time_t: 一个类型定义,用于存储时间值,…...

红酒与艺术展览:品味艺术与风味的双重盛宴
当艺术的魅力与红酒的醇香交织在一起,一场别开生面的盛宴便悄然展开。今天,让我们一同走进这场红酒与艺术展览的邂逅,品味艺术与风味的双重盛宴。 一、艺术展览的瑰丽世界 艺术展览,如同一座瑰丽的宝库,汇聚了无数艺…...

1Panel配置
1. 脚本安装 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh2. 配置镜像加速 在容器-> 配置中设置,否则安装软件会失败。 https://docker.211678.top https://docker.1panel.live …...
场外期权是如何定价的?场外期权定价的基本原理是什么?
场外期权的定价通常基于多种复杂的因素,以下是一些场外期权主要的影响因素和常见的定价方法: 影响场外期权定价的因素: 标的资产价格:标的资产当前的市场价格是定价的基础。标的资产价格波动率:波动率反映了标的资产价…...
vue中数据持久化
在Vue中,数据持久化通常指的是将Vue组件或应用中的数据保存到用户的浏览器或设备的存储中,以便在用户的会话(session)或跨会话(如重新加载页面或重新打开浏览器)中保持这些数据。Vue本身并不直接提供数据持…...

小白零基础学数学建模系列-Day3-线性回归模型的构建与评估
文章目录 1 线性回归基础1.1 线性回归概念与应用1.2 数学原理与推导1.3 线性回归的实现 2 案例分析:房价预测2.1 加载数据2.2 数据预处理2.3 探索性数据分析2.4 观察选择特征2.5 准备训练模型的数据2.6 将数据拆分为训练集和测试集2.7 训练和测试模型2.8 模型评估 3…...
Flutter中的 extended_nested_scroll_view 库:介绍与使用指南
在开发Flutter应用时,处理复杂的滚动效果是一项常见的任务。Flutter提供了NestedScrollView来实现可折叠的应用栏与滚动列表的结合,但在某些情况下,NestedScrollView可能不够强大。为了解决这些问题,我们可以使用extended_nested_…...
Elasticsearch 综合搜索案例解析
Elasticsearch 是一个功能强大的搜索引擎,它不仅支持全文搜索,还提供了排序、分页、高亮显示等多种搜索结果处理功能。通过综合使用这些功能,我们可以构建出丰富而高效的搜索应用。本文将通过一个具体的案例,介绍如何在 Elasticse…...
Web存储革命:揭秘JavaScript的会话存储(sessionStorage)
标题:Web存储革命:揭秘JavaScript的会话存储(sessionStorage) 在当今的Web开发中,状态管理和数据持久化是构建交互式应用的关键。JavaScript提供了多种客户端存储解决方案,其中会话存储(sessio…...

基于python的百度迁徙迁入、迁出数据分析(九)
副标题:从百度迁徙数据看——人口虹吸效应 人口虹吸效应:人口虹吸效应是指大城市或中心城市因其经济、文化、教育、医疗等资源的优势,吸引周边地区的人口、资本和其他资源向其集中的一种现象。这种效应在城市化进程中尤其明显,通…...

2025上海礼品展 华东礼品工艺品展览会
2025第25届上海国际礼品及家居用品展 在璀璨繁华的上海,一场盛大的礼品盛宴即将拉开帷幕。2025年上海国际礼品及 家居用品展览会(简称“华礼展”),作为华东地区乃至全国范围内备受瞩目的礼 品行业盛会,将于2025年6月29日至7月1日在上海新国…...
Flink开发(一):概述与基础
目录 1. Flink概述 1.1 什么是Flink? 1.2 Flink的主要特点 2. Flink的核心组件 2.1 Flink架构 2.2 数据流模型 3. Flink的基础应用 3.1 开发环境配置 3.3 数据源和数据接收器 4. Flink的高级功能 4.1 状态管理与容错 4.2 窗口操作 5. Flink的应用场景 …...

GD32E503实现串口中断收发功能
如有技术问题及技术需求请加作者微信! 源码下载链接:代码下载 亲测可用实现GD32E503库函数串口数据收发功能: #include "gd32e50x.h" #include "gd32e503v_eval.h" #include "systick.h" #include <stdio.h> #include "user_uart…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...