前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows平台Unity下播放RTSP或RTMP如何开启硬解码?

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

原创
作者头像
音视频牛哥
发布2023-08-25 16:37:07
4950
发布2023-08-25 16:37:07
举报
文章被收录于专栏:RTSP/RTMP直播相关

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

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

检测系统是否支持硬解码

代码语言:c#
复制
	/*
     * 检查是否支持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硬解码

代码语言:c#
复制
		/*
     * 设置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后就调用:

代码语言:c#
复制
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_);

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

代码语言:c#
复制
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占用,会有一定的改善,在多路播放的场景下,还是非常必要,感兴趣的开发者,可以参考设计。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
VR 实景漫游
VR 实景漫游(Invision 3D Tour)提供企业从采集、3D 空间建模、模型编辑到分发的的一站式能力,并支持添加标签链接、音视频讲解等营销方式,助力企业完成 VR 营销方式,带给用户便捷、稳定的沉浸式营销新体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档