Cette page explique comment configurer les paramètres lors de la création de points de terminaison ou de canaux d'entrée pour des fonctionnalités de diffusion en direct, telles que plusieurs pistes audio, sous-titres et grilles 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 du point de terminaison d'entrée:
Liste d'autorisation d'adresses IP
Vous pouvez restreindre 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, telles que l'adresse IP de l'encodeur. Le pipeline vidéo n'accepte que le trafic provenant d'adresses IP figurant dans 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 en créant un canal
Vous pouvez spécifier des configurations pour les fonctionnalités suivantes lors de la création du canal:
Plusieurs flux à débit
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
en sortie, l'un à 360p avec une fréquence d'images de 30 FPS (mux_video_360p30
) et l'autre à 720p avec une fréquence d'images de 60 FPS (mux_video_720p60
). Cette configuration accepte également plusieurs débits audio.
Pour en savoir plus, consultez la section Débits 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 comportant plusieurs pistes audio:
Lecture d'une piste audio alternative avec les segments TS
Sélection de pistes audio secondaires et alternatives avec segments fMP4
Passthrough de sous-titres CEA 608/708
Si les flux d'entrée contiennent des sous-titres conformes à la norme CEA 608/708, vous pouvez les transférer vers les flux de sortie. Ajoutez le textStream
suivant à elementaryStreams
lorsque vous créez un Channel
. Ce fichier textStream
intègre les sous-titres CEA 608/708 dans tous les flux vidéo de sortie et rendus.
{
"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
}
]
}