Cómo convertir un video de entrada a HDR

En esta página, se explica cómo convertir el video de entrada en un trabajo de transcodificación a un formato compatible de rango dinámico alto (HDR) o rango dinámico estándar (SDR). La API de Transcoder usa codificación de video de alta eficiencia (HEVC) como códec principal para la conversión de color. La transferencia se habilita de forma predeterminada si no especificas un formato de conversión de color.

Formatos de conversión a color

El HEVC es el códec principal que se usa para los formatos de conversión de color admitidos, que incluyen lo siguiente:

  • Log-gamma híbrido (HLG)
  • SDR
  • HDR10

Para transmisiones H.264 y VP9, solo se admiten HLG y SDR. Se admiten todas las conversiones entre el códec compatible y los formatos de color anteriores.

Transferencia

La transferencia está habilitada de forma predeterminada si no especificas un formato de conversión de color.

Para la transferencia, la API de Transcoder respeta los colores primarios de entrada, la función de transferencia, el rango, la ubicación de la croma y el espacio de color; no se realiza ninguna conversión de color en el proceso. Si la entrada es HDR10 (o HDR10+) y HEVC, la API de Transcoder también pasa los metadatos al video de salida.

Si especificas un códec de salida que no admite el formato de color de entrada, la transferencia es el mejor esfuerzo. Por ejemplo, un video HDR10 de entrada tiene opciones de 10 bits para profile y pixelFormat. Si especificas el resultado como H.265 con una opción de 8 bits para profile, el resultado no es un video HDR10 válido, ya que HDR10 no funciona con una opción de 8 bits para profile.

Ejemplos de conversiones

Para especificar el formato de conversión de color, usa un objeto hlg, hdr10 o sdr vacío. En las siguientes secciones, se muestra el objeto JSON que se debe agregar a un VideoStream para realizar una conversión determinada.

Convertir a formato HLG

Usa el objeto hlg para convertir un video de entrada al formato HLG.

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

Convertir al formato HDR10

Usa el objeto hdr10 para convertir un video de entrada al formato HDR10.

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

Conversión descendente al formato SDR

Usa el objeto sdr para convertir un video de entrada al formato SDR.

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

Posibles errores

Si la API de Transcoder no puede realizar la conversión, el trabajo de transcodificación fallará. Entre los errores posibles, se incluyen los siguientes:

  • Conversión a formato HDR10 con formatos o perfiles de píxeles de 8 bits
  • Entradas SDR que no se ajustan a BT.709