美摄SDK For iOS
3.10.0
|
美摄SDK支持HDR视频的导入、编辑和导出,即全流程的HDR视频处理。相比普通的SDR视频处理,在以下几步需要特殊设置:
初始化SDK,创建timeline,设置liveWindow展示,导出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;
创建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;
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;
通过配置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];
调整在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支持) |