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

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

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


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

9843e789ee424464850227b414498bc1.png

检测系统是否支持硬解码

    /*
     * 检查是否支持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占用,会有一定的改善,在多路播放的场景下,还是非常必要,感兴趣的开发者,可以参考设计。

相关文章
|
2月前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
290 4
|
2月前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
62 0
Windows 平台安装 MongoDB
|
3月前
|
监控 C# 块存储
Windows平台RTSP|RTMP播放器如何叠加OSD文字
做Windows平台RTSP|RTMP播放器的时候,特别是多路播放场景下,开发者希望可以给每一路RTSP或RTMP流添加个额外的OSD台标,以区分不同的设备信息(比如添加摄像头所在位置),本文主要探讨,如何动态添加OSD台标。
Windows平台RTSP|RTMP播放器如何叠加OSD文字
|
2月前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
264 0
|
25天前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
|
29天前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。
|
1月前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
71 3
|
1月前
|
存储 安全 网络安全
Windows Server 本地安全策略
由于广泛使用及历史上存在的漏洞,Windows服务器成为黑客和恶意行为者的主要攻击目标。这些系统通常存储敏感数据并支持关键服务,因此组织需优先缓解风险,保障业务的完整性和连续性。常见的威胁包括勒索软件、拒绝服务攻击、内部威胁、恶意软件感染等。本地安全策略是Windows操作系统中用于管理计算机本地安全性设置的工具,主要包括用户账户策略、安全选项、安全设置等。实施强大的安全措施,如定期补丁更新、网络分段、入侵检测系统、数据加密等,对于加固Windows服务器至关重要。
|
2月前
|
边缘计算 安全 网络安全