You need to enable JavaScript to run this app.
导航

接入 HDR 功能

最近更新时间2023.10.11 19:17:23

首次发布时间2023.02.16 20:10:32

本文为您介绍接入 HDR 的功能介绍、前提条件、播放方式等内容。

功能介绍

HDR(High Dynamic Range,高动态范围 ) 视频,相比普通 SDR(Standard Dynamic Range)视频拥有更高的色深、更广的动态范围和更强的色彩表现力,使得画面更真实、更有层次,很直观的提升视频画质,从而有效提升人们的观影感受。

前提条件

  • 开启硬解(SDK 默认已开启)。
  • 播放 HDR10 或 HLG 视频源。
  • 通过 TTVideoEngineisSupportHDR 方法,检查设备是否支持 HDR。

DirectUrl 模式播放 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];
}

Vid 模式播放 HDR 源

alt

控制台配置转码模板

  1. 登录视频点播控制台,进入空间。
  2. 选择左侧导航栏媒体处理设置 > 媒体处理模板,选择画质增强模板页签,单击添加画质增强模板按钮。
  3. 跳转创建模板页面,根据页面信息提示,开启色彩增强的开关,选择 SDRToHDR,完成参数配置。详情请参见画质增强模板

签发 PlayAuthToken

请求 HDR 源需要 AppServer 在下发的 PlayAuthToken 中签入 HDRDefinition,可通过服务端 SDK 中的获取临时安全凭证,即 PlayAuthToken 文档进行 PlayAuthToken 的接入。

参数 HDRDefinition 取值说明如下所示。

  • 当参数 HDRDefinition = all 时,请求全部 HDR + SDR 档位清晰度。

  • HDRDefinition 支持请求指定 HDR 档位清晰度。

    • 例如 HDRDefinition = 1080p, 请求 1080p HDR + SDR 档位清晰度,如果 1080p 档位清晰度不存在,则返回全部 HDR 档位清晰度,您可根据返回的全部 HDR 档位自行处理。
    • HDRDefinition 可以定的档位有 4k、2k、1080p、720p、480p、360p。

切换 HDR 档位播放

Resolution HDR 档位枚举如下表所示。

枚举值对应分辨率描述
TTVideoEngineResolutionTypeHDR_360P360P标清 HDR
TTVideoEngineResolutionTypeHDR_480P480P高清 HDR
TTVideoEngineResolutionTypeHDR_720P720P超清 HDR
TTVideoEngineResolutionTypeHDR_1080P1080P1080P HDR
TTVideoEngineResolutionTypeHDR_2K2K2K HDR
TTVideoEngineResolutionTypeHDR_4K4K4K HDR

说明

详情请参见基础功能接入获取清晰度部分。

客户端处理

  1. 通过 allSupportedResolutions 获取到所有 HDR+SDR 档位,实现的代码示例如下所示。
// 当 AppServer 增加 hdrDefinition参数,通过获取支持的清晰度包括 HDR+SDR,
// 您根据自己的业务以及 UI 样式进行处理
NSArray<NSNumber *> *allSupportedResolutions = [engine supportedResolutionTypes];
  1. 获取所有档位后,通过 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;
}