最近更新时间:2023.10.11 19:17:23
首次发布时间:2023.02.16 20:10:32
本文为您介绍接入 HDR 的功能介绍、前提条件、播放方式等内容。
HDR(High Dynamic Range,高动态范围 ) 视频,相比普通 SDR(Standard Dynamic Range)视频拥有更高的色深、更广的动态范围和更强的色彩表现力,使得画面更真实、更有层次,很直观的提升视频画质,从而有效提升人们的观影感受。
TTVideoEngine
的 isSupportHDR
方法,检查设备是否支持 HDR。注意
使用 DirectUrl 方式播放视频,您需要提前判定视频是否是 HDR 源。
使用 DirectUrl 方式播放的实现代码示例如下所示。
/** DirectUrl 模式播放视频 @param url 播放地址 @param key 视频的缓存 key,推荐使用可以标记视频的唯一标识,例如 url 的md5值 @param isHDRUrl YES-HDR视频 */ - (void)playWithUrl:(NSString *)url key:(NSString *)key isHDRUrl:(BOOL)isHDRUrl { TTVideoEngineUrlSource *source = [[TTVideoEngineUrlSource alloc] initWithUrl:url cacheKey:key]; if (isHDRUrl && [self.videoEngine isSupportHDR]) { source.isHDRSource = YES; } [self.videoEngine ls_setDirectURLSource:source]; }
请求 HDR 源需要 AppServer 在下发的 PlayAuthToken
中签入 HDRDefinition
,可通过服务端 SDK 中的获取临时安全凭证,即 PlayAuthToken
文档进行 PlayAuthToken
的接入。
参数 HDRDefinition
取值说明如下所示。
当参数 HDRDefinition = all 时,请求全部 HDR + SDR 档位清晰度。
HDRDefinition 支持请求指定 HDR 档位清晰度。
Resolution HDR 档位枚举如下表所示。
枚举值 | 对应分辨率 | 描述 |
---|---|---|
TTVideoEngineResolutionTypeHDR_360P | 360P | 标清 HDR |
TTVideoEngineResolutionTypeHDR_480P | 480P | 高清 HDR |
TTVideoEngineResolutionTypeHDR_720P | 720P | 超清 HDR |
TTVideoEngineResolutionTypeHDR_1080P | 1080P | 1080P HDR |
TTVideoEngineResolutionTypeHDR_2K | 2K | 2K HDR |
TTVideoEngineResolutionTypeHDR_4K | 4K | 4K HDR |
说明
详情请参见基础功能接入中获取清晰度部分。
allSupportedResolutions
获取到所有 HDR+SDR 档位,实现的代码示例如下所示。// 当 AppServer 增加 hdrDefinition参数,通过获取支持的清晰度包括 HDR+SDR, // 您根据自己的业务以及 UI 样式进行处理 NSArray<NSNumber *> *allSupportedResolutions = [engine supportedResolutionTypes];
isHDRResolution
方法筛选出 HDR 档位,您可以根据自己业务需求进行页面布局使用。/** 判断是否是 HDR 档位清晰度 @param resolutionType 清晰度 */ - (BOOL)isHDRResolution:(TTVideoEngineResolutionType)resolutionType { NSDictionary<NSString *, NSNumber *> *resolutionMapDic = [self.videoEngine resolutionMap]; for (NSString *key in resolutionMapDic.allKeys) { NSNumber *resolutionObj = [resolutionMapDic objectForKey:key]; if ([resolutionObj integerValue] == resolutionType && [[key lowercaseString] containsString:@"hdr"]) { return YES; } } return NO; }