You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Windows MediaTranscoder API将HDR视频转码为SDR视频

Windows MediaTranscoder 设置转码输出位深度(HDR转SDR)的实现方法

你需要手动修改MediaEncodingProfile的视频编码属性来指定输出位深度,预设的CreateMp4重载方法没有直接暴露位深度设置入口,具体操作步骤如下:


步骤1:创建基础编码配置

先用预设方法创建目标分辨率的基础编码配置:

MediaEncodingProfile profile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.HD720p);

步骤2:修改视频编码属性配置位深度

从profile中取出视频编码属性对象,设置目标位深度及匹配的像素格式:

var videoProps = profile.Video;
// 设置输出位深度为8位(SDR的标准位深度)
videoProps.BitDepth = 8;
// 设置匹配8位深度的像素格式,NV12为绝大多数硬件、播放器兼容的通用格式
videoProps.Subtype = MediaEncodingSubtypes.Nv12;
// 可选配置:强制标记输出为SDR动态范围,避免识别异常
videoProps.NominalDynamicRange = MediaVideoDynamicRange.Sdr;

步骤3:配置转码器启用自动色调映射(HDR转SDR必选)

如果是HDR源转SDR,需要开启转码器内置的视频处理能力,自动完成HDR到SDR的色域、亮度映射:

MediaTranscoder transcoder = new MediaTranscoder();
// 启用内置视频处理管线,自动完成色调映射
transcoder.AlwaysUseVideoProcessing = true;

注意事项

  • 位深度设置需要和Subtype指定的编码子类型匹配:8位深度对应Nv12、Yuy2等子类型,10位深度对应P010等子类型,格式不匹配会导致配置不生效或转码失败。
  • 如果需要输出10位SDR或10位HDR内容,修改BitDepth为10并匹配对应子类型即可。

内容的提问来源于stack exchange,提问作者Sazzad Hissain Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:45:02