Configurer les paramètres de streaming en direct

Cette page explique comment configurer les paramètres lors de la création d'un point de terminaison d'entrée ou d'un canal pour les fonctionnalités de diffusion en direct, telles que les pistes audio multiples, les sous-titres et les feuilles de sprites.

Configurer via la création d'un point de terminaison d'entrée

Vous pouvez spécifier des configurations pour les fonctionnalités suivantes lors de la création de points de terminaison d'entrée:

Liste d'autorisation d'adresses IP

Vous pouvez limiter l'accès aux points de terminaison d'entrée en spécifiant les plages d'adresses IP à partir desquelles le flux d'entrée doit provenir, comme l'adresse IP de l'encodeur. Le pipeline vidéo n'accepte que le trafic provenant des adresses IP de ces plages. Les plages d'adresses IP doivent être au format de bloc CIDR.

Configurez le champ securityRules dans la ressource Input:

{
  "type": "RTMP_PUSH",
  "securityRules": {
    "ipRanges": ["1.2.3.4/32"]
  }
}

Configurer lors de la création d'un canal

Vous pouvez spécifier des configurations pour les fonctionnalités suivantes lors de la création de canaux:

Flux à débit multiple

Vous pouvez créer des configurations de canaux avancées compatibles avec plusieurs débits, résolutions et fréquences d'images. La configuration suivante inclut deux muxStream dans la sortie, l'une en 360p avec une fréquence d'images de 30 FPS (mux_video_360p30) et l'autre en 720p avec une fréquence d'images de 60 FPS (mux_video_720p60). Cette configuration est également compatible avec plusieurs débits audio. Pour en savoir plus, consultez la section Bitrates recommandés.

{
  "inputAttachments":[
    {
      "key":"input-primary",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "output":{
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "key": "es_video_720p60",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 5500000,
          "frameRate": 60
        }
      }
    },
    {
      "key": "es_video_360p30",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 360,
          "widthPixels": 640,
          "bitrateBps": 400000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_audio_160k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 160000
      }
    },
    {
      "key": "es_audio_64k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 64000
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_720p60",
      "elementaryStreams": [
        "es_video_720p60"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_video_360p30",
      "elementaryStreams": [
        "es_video_360p30"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_160k",
      "elementaryStreams": [
        "es_audio_160k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_64k",
      "elementaryStreams": [
        "es_audio_64k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    },
    {
      "key": "manifest_hls",
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    }
  ]
}

Plusieurs pistes audio

Si le flux d'entrée contient plusieurs pistes audio, utilisez l'objet AudioMapping pour sélectionner la piste pour chaque AudioStream.

{
  "inputAttachments": [
    {
      "key": "MY-INPUT",
      "input": "/projects/PROJECT-ID/locations/LOCATION/inputs/MY-INPUT",
    }
  ],
  "output": {
    "uri": "gs://BUCKET_NAME/outputs/"
  },
  "elementaryStreams": [
    {
      "key": "es_video",
      "videoStream": {
        "h264": {
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 3000000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_first_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 1
          }
        ]
      }
    },
    {
      "key": "es_second_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 2
          }
        ]
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video",
      "elementaryStreams": ["es_video"],
    },
    {
      "key": "mux_first_audio",
      "elementaryStreams": ["es_first_audio"],
    },
    {
      "key": "mux_second_audio",
      "elementaryStreams": ["es_second_audio"],
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "type": "DASH",
      "muxStreams": [
        "mux_video",
        "mux_first_audio",
        "mux_second_audio",
      ]
    }
  ]
}

Notez que Shaka Player n'est pas compatible avec les fonctionnalités suivantes pour les flux HLS avec plusieurs pistes audio:

  • Alternez la lecture des pistes audio avec des segments TS.

  • Sélection de pistes audio secondaires et alternatives avec des segments fMP4.

Passthrough des sous-titres CEA 608/708

Si les flux d'entrée contiennent des sous-titres CEA 608/708, vous pouvez les transmettre aux flux de sortie. Ajoutez le textStream suivant à elementaryStreams lorsque vous créez un Channel. Cette textStream intègre les sous-titres CEA 608/708 dans tous les flux et interprétations vidéo de sortie.

{
  "key": "captions",
  "textStream": {
    "codec": "cea608"
  }
}

Feuilles de sprites

Pour générer une feuille de sprites, configurez le champ spriteSheets dans la ressource Channel.

{
  "spriteSheets": [
    {
      "format": "jpeg",
      "filePrefix": "sprite",
      "interval": "2s",
      "spriteWidthPixels": 320,
      "spriteHeightPixels": 240,
      "columnCount": 3,
      "rowCount": 3,
      "quality": 80
    }
  ]
}