|
美摄SDK For iOS
3.15.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支持) |
1.8.18