将输入视频转换为 HDR

本页介绍了如何将转码作业中的输入视频转换为受支持的高动态范围 (HDR) 或标准动态范围 (SDR) 格式。Transcoder API 使用高效率视频编码 (HEVC) 作为颜色转换的主要编解码器。如果您未指定颜色转换格式,则系统会默认启用透传。

颜色转换格式

HEVC 是用于支持的色彩转换格式的主编解码器,包括以下格式:

  • 混合 Log-Gamma (HLG)
  • SDR
  • HDR10

对于 H.264VP9 串流,仅支持 HLG 和 SDR。支持在受支持的编解码器和上述颜色格式之间进行的所有转换。

直通式

如果您未指定颜色转换格式,则系统会默认启用透传。

对于透传,Transcoder API 会遵循输入主色、传输函数、范围、色度位置和色彩空间;在此过程中不会进行任何颜色转换。如果输入是 HDR10(或 HDR10+)和 HEVC,Transcoder API 还会将元数据传递给输出视频。

如果您指定的输出编解码器不支持输入的颜色格式,则系统会尽力进行透传。例如,输入 HDR10 视频具有 profilepixelFormat 的 10 位选项。如果您将输出指定为 H.265,并为 profile 使用 8 位选项,则输出不是有效的 HDR10 视频,因为 HDR10 不适用于 profile 的 8 位选项。

转化示例

如需指定颜色转换格式,请使用空的 hlghdr10sdr 对象。以下部分展示了要添加到 VideoStream 以执行给定转换的 JSON 对象。

转换为 HLG 格式

使用 hlg 对象将输入视频转换为 HLG 格式。

"elementaryStreams": [
  {
    "key": "video_hlg",
    "videoStream": {
      "h264": {
        "heightPixels": 720,
        "widthPixels": 1280,
        "bitrateBps": 5000000,
        "frameRate": 25,
        "hlg":{}
    }
  }
]

转换为 HDR10 格式

使用 hdr10 对象将输入视频转换为 HDR10 格式。

"elementaryStreams": [
  {
    "key": "video_hdr10",
    "videoStream": {
      "h265": {
        "heightPixels": 720,
        "widthPixels": 1280,
        "bitrateBps": 5000000,
        "frameRate": 25,
        "pixelFormat":"yuv420p10",
        "profile":"main10",
        "hdr10":{}
    }
  }
]

向下转换为 SDR 格式

使用 sdr 对象将输入视频向下转换为 SDR 格式。

"elementaryStreams": [
  {
    "key": "video_sdr",
    "videoStream": {
      "h264": {
        "heightPixels": 720,
        "widthPixels": 1280,
        "bitrateBps": 5000000,
        "frameRate": 25,
        "sdr":{}
    }
  }
]

可能出现的错误

如果 Transcoder API 无法执行转换,转码作业将失败。可能的错误包括:

  • 使用 8 位像素格式或配置文件转换为 HDR10 格式
  • 不符合 BT.709 的 SDR 输入