美摄SDK For Android
3.14.0
|
美摄SDK支持HDR视频的导入、编辑和导出,即全流程的HDR视频处理。相比普通的SDR视频处理,在以下几步需要特殊设置:
初始化SDK,创建timeline,设置liveWindow展示,导出HDR。
通过NvsStreamingContext类上的getEngineHDRCaps()接口可以获取本机的HDR支持能力,返回值含义如下:
public static final int HDR_CAPABILITY_FLAG_SUPPORTED_BY_IMPORTER = 1; (导入) public static final int HDR_CAPABILITY_FLAG_SUPPORTED_BY_EDITING = 2; (编辑) public static final int HDR_CAPABILITY_FLAG_SUPPORTED_BY_EXPORTER = 4; (导出) public static final int HDR_CAPABILITY_FLAG_SUPPORTED_BY_LIVEWINDOW = 8;(屏幕支持)
HDR功能需要添加下面标记:
NvsStreamingContext.STREAMING_CONTEXT_FLAG_ENABLE_HDR_DISPLAY_WHEN_SUPPORTED
String licensePath = "assets:/meishesdk.lic"; NvsStreamingContext.init(mContext, licensePath, NvsStreamingContext.STREAMING_CONTEXT_FLAG_SUPPORT_4K_EDIT|NvsStreamingContext.S TREAMING_CONTEXT_FLAG_ENABLE_HDR_DISPLAY_WHEN_SUPPORTED);
创建timeline需要指定NvsVideoResolution的bitDepth属性,该属性有3个参数:
VIDEO_RESOLUTION_BIT_DEPTH_8_BIT (SDR编辑)
VIDEO_RESOLUTION_BIT_DEPTH_16_BIT_FLOAT(HDR编辑)
VIDEO_RESOLUTION_BIT_DEPTH_AUTO (自动适配机型)
//创建timeline videoEditRes.bitDepth = XXXX mStreamingContext.createTimeline(videoEditRes, videoFps, audioEditRes);
livewindow有3种支持模式,可以通过setHDRDisplayMode()配置:
HDR_DISPLAY_MODE_SDR (按SDR模式显示,对于HDR的视频不做处理,画面可能过爆) HDR_DISPLAY_MODE_DEPEND_DEVICE (依据设备自动适配) HDR_DISPLAY_MODE_TONE_MAP_SDR(将HDR视频转换成SDR再显示,画面不会过爆)
通过配置compileConfigurations来支持HDR的导出,需要设置两个参数:
1. key为:NvsStreamingContext.COMPILE_VIDEO_ENCODER_NAME value为:"hevc" 2. key为:NvsStreamingContext.COMPILE_VIDEO_HDR_COLOR_TRANSFER value为:"none"或者"st2084"或者"hlg"
Hashtable<String, Object> compileConfigurations = new Hashtable<>(); compileConfigurations.put(NvsStreamingContext.COMPILE_VIDEO_ENCODER_NAME,Constants.HDR_EXPORT_HEVC); compileConfigurations.put(NvsStreamingContext.COMPILE_VIDEO_HDR_COLOR_TRANSFER, settingValues.getExportConfig()); mStreamingContext.setCompileConfigurations(compileConfigurations);
调整在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 com.meicam.sdk.NvsStreamingContext.setColorGainForSDRToHDR(float gain) /*! \if ENGLISH * \brief * \return * \else * \brief 获取在SDR向HDR转换时候色彩增益 * \return 返回色彩增益值 范围是【1.0,10.0】 * \endif * \since 2.23.0 * \sa setColorGainForSDRToHDR */ float com.meicam.sdk.NvsStreamingContext.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支持) |