Windows平台Unity下播放RTSP或RTMP如何开启硬解码?

我们在做Windows平台Unity播放RTMP或RTSP的时候,遇到这样的问题,比如展会、安防监控等场景下,需要同时播放多路RTMP或RTSP流,这样对设备性能,提出来更高的要求。

虽然我们软解码,已经做的资源占有非常低了,但考虑到多路播放的情况,我们也设计了硬解码的接口,下面大概讲下,如何在Unity下开启硬解码:

检测系统是否支持硬解码

		/** 检查是否支持H264硬解码 * 如果支持的话返回NT_ERC_OK*/[DllImport("SmartPlayerSDK")]public static extern UInt32 NT_SP_IsSupportH264HardwareDecoder();/** 检查是否支持H265硬解码* 如果支持的话返回NT_ERC_OK*/[DllImport("SmartPlayerSDK")]public static extern UInt32 NT_SP_IsSupportH265HardwareDecoder();

如果支持,设置H.264、H.265硬解码

		/** 设置H264硬解* is_hardware_decoder: 1:表示硬解, 0:表示不用硬解* reserve: 保留参数, 当前传0就好* 成功返回NT_ERC_OK*/[DllImport("SmartPlayerSDK")]public static extern UInt32 NT_SP_SetH264HardwareDecoder(IntPtr handle, Int32 is_hardware_decoder, Int32 reserve);/** 设置H265硬解* is_hardware_decoder: 1:表示硬解, 0:表示不用硬解* reserve: 保留参数, 当前传0就好* 成功返回NT_ERC_OK*/[DllImport("SmartPlayerSDK")]public static extern UInt32 NT_SP_SetH265HardwareDecoder(IntPtr handle, Int32 is_hardware_decoder, Int32 reserve);

Unity环境下调用,是否支持硬解码,可以在Init后就调用:

uint isInited = NTSmartPlayerSDK.NT_SP_Init(0, IntPtr.Zero);if (isInited != 0)
{Debug.LogError("调用NT_SP_Init失败.." + isInited.ToString());return;
}is_support_h264_hardware_decoder_ = NT.NTBaseCodeDefine.NT_ERC_OK == NT.NTSmartPlayerSDK.NT_SP_IsSupportH264HardwareDecoder();
is_support_h265_hardware_decoder_ = NT.NTBaseCodeDefine.NT_ERC_OK == NT.NTSmartPlayerSDK.NT_SP_IsSupportH265HardwareDecoder();Debug.Log("isSupportH264decoder:" + is_support_h264_hardware_decoder_);
Debug.Log("isSupportH265decoder:" + is_support_h265_hardware_decoder_);

如果检测到支持的话,设置下硬解码即可:

NTSmartPlayerSDK.NT_SP_SetH264HardwareDecoder(videoctrl[sel].player_handle_, is_support_h264_hardware_decoder_ ? 1 : 0, 0);
NTSmartPlayerSDK.NT_SP_SetH265HardwareDecoder(videoctrl[sel].player_handle_, is_support_h265_hardware_decoder_ ? 1 : 0, 0);

如果系统支持硬解码,开启后,可以明显看到CPU占用,会有一定的改善,在多路播放的场景下,还是非常必要,感兴趣的开发者,可以参考设计。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人力资源小程序的设计与开发步骤

在当前信息化时代,小程序成为了各行各业提升用户体验和服务效率的重要渠道。人力资源部门也可以通过定制开发人力资源小程序来提升招聘、培训、员工福利等方面的工作效率。接下来,我们将介绍人力资源小程序定制系统开发的具体流程。 首先,我们…

[JavaWeb]【十四】web后端开发-MAVEN高级

目录 一、分模块设计与开发 1.1 分模块设计 1.2 分模块设计-实践​编辑 1.2.1 复制老项目改为spring-boot-management 1.2.2 新建maven模块runa-pojo 1.2.2.1 将原项目pojo复制到runa-pojo模块 1.2.2.2 runa-pojo引入新依赖 1.2.2.3 删除原项目pojo包 1.2.2.4 在spring-…

微软 Visual Studio 现已内置 Markdown 编辑器,可直接修改预览 .md 文件

Visual Studio Code V1.66.0 中文版 大小:75.30 MB类别:文字处理 本地下载 Markdown 是一种轻量级标记语言,当开发者想要格式化代码但又不想牺牲易读性时,Markdown 是一个很好的解决方案,比如 GitHub 就使用 Markdo…

Cauchy’s integral formula

见:https://math.mit.edu/~jorloff/18.04/notes/topic4.pdf

uniapp使用sqlite 数据库

uniapp使用sqlite 数据库 傻瓜式使用方式,按步骤,即可使用。 1.开启sqlite 在项目中manifest.json该文件中配置 2.封装数据库的调用方法 const sqlName "zmyalh" //定义的数据库名称 const sqlPath "_doc/zmyalh.db" //定义数…

macOS M1使用TensorFlow GPU加速

本人是在pycharm运行代码,安装了tensorflow版本2.13.0 先运行代码查看有没有使用GPU加速: import tensorflow as tf# Press the green button in the gutter to run the script. if __name__ __main__:physical_devices tf.config.list_physical_dev…

Sentinel dashboard无法查询到应用的限流配置问题以及解决

一。问题引入 使用sentinle-dashboard控制台 项目整体升级后,发现控制台上无法看到流控规则了 之前的问题是无法注册上来 现在是注册上来了。结果看不到流控规则配置了。 关于注册不上来的问题,可以看另一篇文章 https://blog.csdn.net/a15835774652/…

linux 性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)

引言 学生时代经常听到老师和同学说到学习 linux 的重要性。但是当时看到这个命令行界面就头疼,也就草草地应付学了一下,哎嘛,还是游戏香! 但是当前两天自己捣鼓服务器的时候,发现自己部署的一个服务总是崩溃&#x…

python将png格式的图片转换为jpg格式的图片

png图片是4通道 RGBA图像,具有4个通道(红色、绿色、蓝色和透明度),用于表示彩色图像以及透明度信息。 只是简单的修改后缀,并不能将png格式图片改为jpg格式。 将png格式的图片转换为jpg格式的图片 确保安装了pillow库…

Visual Studio 2022的MFC框架——theApp全局对象

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 MFC中的WinMain函数是如何与MFC程序中的各个类组织在一起的呢?MFC程序中的类是如何与WinMain函数关联起来的呢&#xff1f…

UWB高精度人员定位系统源码,微服务+java+ spring boot+ vue+ mysql技术开发

工业物联网感知预警体系,大中小企业工业数字化转型需求的工业互联网平台 工厂人员定位系统是指能够对工厂中的人员、车辆、设备等进行定位,实现对人员和车辆的实时监控与调度的系统,是智慧工厂建设中必不可少的一环。由于工厂的工作环境比较…

Linux(基础篇一)

Linux基础篇 Linux基础篇一1. Linux文件系统与目录结构1.1 Linux文件系统1.2 Linux目录结构 2. VI/VIM编辑器2.1 vi/vim是什么2.2 模式间的转换2.3 一般模式2.4 插入模式2.4.1 进入编辑模式2.4.2 退出编辑模式 2.5 命令模式 3. 网络配置3.1 网络连接模式3.2 修改静态ip3.3 配置…

优维产品最佳实践第5期:什么是持续集成?

谈到到DevOps,持续交付流水线是绕不开的一个话题,相对于其他实践,通过流水线来实现快速高质量的交付价值是相对能快速见效的,特别对于开发测试人员,能够获得实实在在的收益。 本期EasyOps产品使用最佳实践&#xff0c…

先进API生产力工具eqable HTTP,一站式开发调试工具推荐

简介 Reqable是什么? Regable Fiddler/Charles Postman Reqable是HTTP一站式开发调试国产化解决方案,拥有更便捷的体验,更先进的协议,更高效的性能和更精致的界面。 Reqable是一款跨平台的专业HTTP开发和调试工具,在全平台支持…

【业务功能篇83】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-应用层实战

五、ElasticSearch应用 1.ES 的Java API两种方式 Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种。相比来说transportClient API效率更高,transportClient 是通过Elasticsearch内部RPC的形式进行请求…

基于OpenCV实战(基础知识二)

目录 简介 1.ROI区域 2.边界填充 3.数值计算 4.图像融合 简介 OpenCV是一个流行的开源计算机视觉库,由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包,可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。Ope…

水果flstudio好用吗?中文版FL21最新版本如何下载

FL Studio21版是一款功能强大的音乐制作软件,广泛应用于电子音乐、流行音乐、电影配乐等领域。它提供了丰富多样的音频合成和编辑工具,使音乐制作变得更加灵活多样。无论是初学者还是专业音乐制作人,都可以通过直观的界面和丰富的音频特效来实…

论文阅读:DIN-SQL: Decomposed In-Context Learning of Text-to-SQL withSelf-Correction

NL2SQL是将自然语言转化为SQL的任务,该任务隶属于NLP的子任务,NL2SQL在AIGC时代之前,以seq2seq、BERT等系列的模型在NL2SQL的主流数据集上取得了不错的效果,2022年底,ChatGPT爆火,凭借LLM强大的逻辑推理、上…

NLP的tokenization

GPT3.5的tokenization流程如上图所示,以下是chatGPT对BPE算法的解释: BPE(Byte Pair Encoding)编码算法是一种基于统计的无监督分词方法,用于将文本分解为子词单元。它的原理如下: 1. 初始化:将…

bh002- Blazor hybrid / Maui 保存设置快速教程

1. 建立工程 bh002_ORM 源码 2. 添加 nuget 包 <PackageReference Include"BootstrapBlazor.WebAPI" Version"7.*" /> <PackageReference Include"FreeSql" Version"*" /> <PackageReference Include"FreeSql.…