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…...
告别迷茫!在嵌入式Linux上用libwebsockets v4.0实现WebSocket客户端(含SSL配置避坑)
嵌入式Linux实战:libwebsockets v4.0客户端开发与SSL避坑指南 当树莓派的GPIO引脚需要与云端实时同步数据时,WebSocket往往是嵌入式开发者的首选协议。但面对内存仅512MB的ARMv7开发板,选用一个既支持SSL加密又能兼容C99标准的轻量级库&#…...
【ZYNQ】AXI4总线协议实战:从握手时序到PS-PL高效通信
1. AXI4总线协议基础:从握手信号到通道架构 第一次接触ZYNQ的PS-PL通信时,我被AXI4协议里那些VALID/READY信号搞得头晕眼花。直到在示波器上抓到真实的握手波形,才突然理解这个看似复杂的协议其实像极了我们日常的对话机制——只有当说话方准…...
对比直接使用厂商 API 体验 Taotoken 在模型切换上的便利性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商 API 体验 Taotoken 在模型切换上的便利性 在个人开发项目中接入大模型时,开发者通常面临一个选择&am…...
告别串口线!用STM32CubeMX配置USB-CDC虚拟串口,实现与电脑免驱动通信(附Win7驱动安装指南)
STM32虚拟串口革命:USB-CDC免驱动通信全实战指南 嵌入式开发调试过程中,最令人头疼的莫过于频繁插拔串口线导致的接口松动、接触不良问题。传统串口调试不仅占用宝贵的UART资源,还常常因为物理连接问题浪费大量调试时间。本文将彻底改变这一局…...
仅限菲律宾本地团队使用的ElevenLabs隐藏功能:Tagalog重音标记语法(`[ˈba.ka]`)、连读规则注入与敬语语调开关(内测白名单已开放)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs菲律宾文语音能力的本地化演进背景 菲律宾语(Filipino)作为以他加禄语(Tagalog)为基础的国家官方语言,拥有约1.05亿母语及第二语言…...
怎么找到一个行业的源头工厂、绕开中间商?一套五步识别流程
你下了单,货到了,质量也还行。但心里一直有个疙瘩:这家供应商到底是自己在生产,还是从别处转手赚了你一道差价? 这个问题对采购方和跨境卖家不是洁癖,是真金白银。同一款产品,源头工厂和中间商的…...
【仅限前200名】Midjourney铂金印相专属Prompt库泄露:含17组经暗房验证的--v 6.2参数矩阵与胶片光谱校准模板
更多请点击: https://intelliparadigm.com 第一章:Midjourney铂金印相的光学本质与历史语境 铂金印相(Platinum Print)并非数字时代的产物,而是一种诞生于1873年的古典摄影工艺——其影像由铂族金属(主要是…...
ESP32-S2 Reverse TFT Feather开发板深度解析:从核心硬件到物联网项目实战
1. 项目概述:为什么选择ESP32-S2 Reverse TFT Feather?如果你正在寻找一款能让你快速搭建物联网设备原型,尤其是那些需要一块漂亮屏幕来交互或显示信息的项目,那么ESP32-S2 Reverse TFT Feather绝对是一个值得你花时间研究的开发板…...
KMS智能激活终极指南:如何一键永久激活Windows和Office
KMS智能激活终极指南:如何一键永久激活Windows和Office 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活烦恼吗?每次重装系统后都要重新激活Office&…...
TransPrompt:结构化提示词工程,提升LLM应用开发效率
1. 项目概述:当提示词工程遇上结构化工具最近在折腾大语言模型应用开发的朋友,估计都绕不开一个核心痛点:如何高效、稳定地管理那些越来越复杂、越来越长的提示词(Prompt)。直接写在代码里?改起来麻烦&…...
