You need to enable JavaScript to run this app.
导航
播放 HDR 视频
最近更新时间:2024.08.21 16:03:31首次发布时间:2023.02.16 20:10:32

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

前提条件

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

DirectUrl 模式播放 HDR 源

使用 DirectUrl 方式播放视频时,您需要提前判定视频是否是 HDR 源。代码示例如下所示。

/**
 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 源

图片

控制台配置转码模板

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

服务端签发临时播放 token

应用客户端需要从服务端请求 HDR 源。服务端需要在签发临时播放 Token 中设置 HDRDefinition,具体请见以下文档:

参数 HDRDefinition 支持的取值为 all4k2k1080p720p480p360p。其中:

  • HDRDefinitionall 时,请求全部 HDR + SDR 档位清晰度。
  • HDRDefinition 为具体某一清晰度,例如 1080p, 请求 1080p HDR + SDR 档位清晰度。如果 1080p 档位清晰度不存在,则返回全部 HDR 档位清晰度,您可根据返回的全部 HDR 档位自行处理。

切换 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

说明

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

客户端处理

  1. 通过 allSupportedResolutions 获取到所有 HDR+SDR 档位,实现的代码示例如下所示。

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