美摄SDK For iOS  3.10.0
HDR

HDR

HDR相关说明:

美摄SDK支持HDR视频的导入、编辑和导出,即全流程的HDR视频处理。相比普通的SDR视频处理,在以下几步需要特殊设置:

初始化SDK,创建timeline,设置liveWindow展示,导出HDR。

获取本机HDR支持能力:

通过NvsStreamingContext类上的getEngineHDRCaps()接口可以获取本机的HDR支持能力,返回值含义如下

/*! \anchor  NvsHDRCapabilityFlag */
/*!
*  \if ENGLISH
*   @name 
*  \else
*   @name HDR能力
*  \endif
*/
typedef enum {
    NvsHDRCapabilityFlagSupportedByImporter = 1,      //!< \if ENGLISH   \else 支持导入HDR视频 \endif
    NvsHDRCapabilityFlagSupportedByEditing = 2,       //!< \if ENGLISH   \else 编辑支持HDR \endif
    NvsHDRCapabilityFlagSupportedByExporter = 4,      //!< \if ENGLISH   \else 支持导出HDR视频 \endif
    NvsHDRCapabilityFlagSupportedByLivewindow = 8,    //!< \if ENGLISH   \else 预览窗口支持HDR \endif
}NvsHDRCapabilityFlag;

1、创建timeline:

创建timeline需要调用方法:

- (NvsTimeline *)createTimeline:(NvsVideoResolution *)videoEditRes videoFps:(NvsRational *)videoFps audioEditRes:(NvsAudioResolution *)audioEditRes bitDepth:(NvsVideoResolutionBitDepth)depth flags:(int)flags;

创建timeline时需要指定NvsVideoResolution的bitDepth属性,该属性有3个参数:

typedef enum NvsVideoResolutionBitDepth{
    NvsVideoResolutionBitDepth_8Bit,            //!< \if ENGLISH  \else 图像像素的位深度为8Bit  \endif
    NvsVideoResolutionBitDepth_16Bit_Float,     //!< \if ENGLISH  \else 图像像素的位深度为半精度浮点  \endif
    NvsVideoResolutionBitDepth_Auto             //!< \if ENGLISH  \else 图像像素的位深度为自适应,比如在编辑中有HDR的视频,SDK内部处理HDR视频会使用半精度浮点  \endif
} NvsVideoResolutionBitDepth;

2、设置livewindow:

livewindow有hdr3种支持模式可以通过hdrDisplayMode属性配置:

typedef enum {
    NvsLiveWindowHDRDisplayMode_SDR = 0,            //!< \if ENGLISH  \else 强制使用SDR的方式进行显示,不进行HDR到SDR转化,不管设备支不支持HDR显示 \endif
    NvsLiveWindowHDRDisplayMode_Device ,            //!< \if ENGLISH  \else 如果设备支持HDR,就使用HDR进行显示 \endif
    NvsLiveWindowHDRDisplayMode_TONE_MAP_SDR ,      //!< \if ENGLISH  \else 如果设备支持HDR,就使用HDR进行显示,如果设备不支持,使用HDR转换为SDR进行显示 \endif
} NvsLiveWindowHDRDisplayMode; 

3、生成配置:

通过配置compileConfigurations来支持HDR的导出,需要设置两个参数:

代码示例:

[[NvsStreamingContext sharedInstance].compileConfigurations setValue:@”hevc” forKey:NVS_COMPILE_VIDEO_ENCODEC_NAME];
[[NvsStreamingContext sharedInstance].compileConfigurations setValue:@”hlg” forKey:NVS_COMPILE_HDR_VIDEO_COLOR_TRANSFER];

4、色彩增益处理:

调整在SDR向HDR转换时候色彩增益,默认:0。

/*! \if ENGLISH
*  \brief 
*  \param 
*  \else
*  \brief 设置在SDR向HDR转换时候色彩增益
*  \param gain 为色彩增益 范围是【1.0,10.0】
*  \endif
*  \since 2.23.0
*  \sa getColorGainForSDRToHDR
*/
- (void)setColorGainForSDRToHDR:(float)gain;

/*! \if ENGLISH
*  \brief 
*  \return 
*  \else
*  \brief 获取在SDR向HDR转换时候色彩增益
*  \return 返回色彩增益值 范围是【1.0,10.0】
*  \endif
*  \since 2.23.0
*  \sa setColorGainForSDRToHDR
*/
- (float)getColorGainForSDRToHDR;

录制参数与导出参数:NVS_RECORD_VIDEO_ENCODEC_NAME,NVS_RECORD_HDR_VIDEO_COLOR_TRANSFER。

其他:

媒体格式分为几类 SDR、HDR、HDR10、HDR10+、Dolby Vision。

类型 颜色转换曲线名称
SDR none
HDR hlg
HDR10/HDR10+ st2084(PQ视频)
Dolby Vision(仅IOS支持) hlg dolby vision(仅IOS支持)