En esta página se explica cómo distribuir la salida de la emisión en directo a endpoints remotos mediante el protocolo de transporte fiable seguro (SRT) o el protocolo de mensajería en tiempo real (RTMP). Tanto SRT como RTMP se usan en el modo push para enviar la emisión a los endpoints. Los formatos de contenedor admitidos son MPEG-TS para SRT y FLV para RTMP.
Antes de empezar
En esta página se da por hecho que has completado los pasos de la sección Antes de empezar de la guía de inicio rápido de las emisiones en directo de HLS.
En función del protocolo de distribución que elijas, crea un endpoint SRT o RTMP en el proveedor en el que quieras recibir la salida en modo push. El formato del URI del endpoint varía según el protocolo:
- Para SRT:
srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID
- Para RTMP:
rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/RTMP_STREAM_KEY
o solortmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME
SRT_SERVER_IP y RTMP_SERVER_IP pueden ser una dirección IP o un nombre de dominio.
Crear el endpoint de entrada
Para crear el endpoint de entrada, usa el método projects.locations.inputs.create
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: ubicación en la que se creará el punto final de entrada. Usa una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identificador definido por el usuario del nuevo endpoint de entrada que se va a crear (al que se envía el flujo de entrada). Este valor debe tener entre 1 y 63 caracteres, empezar y terminar con[a-z0-9]
, y puede incluir guiones (-) entre caracteres. Por ejemplo,my-input
.
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Copia el OPERATION_ID devuelto para usarlo en la siguiente sección.
Comprobar el resultado
Usa el método projects.locations.operations.get
para comprobar si se ha creado el punto final de entrada. Si la respuesta contiene "done: false"
, repite el comando hasta que la respuesta contenga "done: true"
. Crear el primer punto final de entrada de una región puede tardar hasta 10 minutos.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu endpoint de entrada. Usa una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
OPERATION_ID
: el identificador de la operación
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "endTime": END_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.Input", "name": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "type": "RTMP_PUSH", "uri": INPUT_STREAM_URI, # For example, "rtmp://1.2.3.4/live/b8ebdd94-c8d9-4d88-a16e-b963c43a953b", "tier": "HD" } }
Busca el campo uri
y copia el valor devuelto
INPUT_STREAM_URI para usarlo más adelante
en la sección Enviar el flujo de entrada.
Crear el canal
Para crear el canal, utiliza el método projects.locations.channels.create
.
Ten en cuenta lo siguiente en la configuración del canal:
- La matriz
distributionStreams
contiene los ajustes de multiplexación de las secuencias de las distribuciones. Cada objeto
DistributionStream
debe incluir los camposkey
,container
yelementaryStreams
.{ "distributionStreams": [ { "key": "ds1", "container": "ts", // to be used with an SRT distribution "elementaryStreams": [ "es_video_720", "es_audio" ] }, { "key": "ds2", "container": "flv", // to be used with an RTMP distribution "elementaryStreams": [ "es_video_640", "es_audio" ] } ] }
La matriz
distributions
muestra las configuraciones de distribución, incluidos los endpoints remotos.Asigna el valor
key
de un objetoDistributionStream
al campodistributionStream
del objetoDistribution
.Para la distribución SRT, asigna el valor
uri
del objetoSrtPushOutputEndpoint
a un endpoint SRT que hayas creado. Para la distribución RTMP, asigna el valoruri
del objetoRtmpPushOutputEndpoint
a un endpoint RTMP que hayas creado.{ "distributions": [ { "key": "pd1", "distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container "srtPush": { "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID" } }, { "key": "pd2", "distributionStream": "ds2", // defined in a distributionStreams[] object with an FLV container "rtmpPush": { "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME/", "streamKey": "RTMP_STREAM_KEY" } } ] }
Para distribuir subtítulos y traducciones generados por IA, consulta la guía sobre cómo configurar subtítulos y traducciones automáticos.
En los siguientes ejemplos se usan un objeto DistributionStream
y un objeto Distribution
.
REST
SRT
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación en la que se creará el canal. Usa una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal que se va a crear. Este valor debe tener entre 1 y 63 caracteres, empezar y terminar con[a-z0-9]
, y puede contener guiones (-) entre caracteres.INPUT_ID
: identificador definido por el usuario del endpoint de entradaBUCKET_NAME
: el nombre del segmento de Cloud Storage que has creado para alojar el manifiesto de la emisión en directo y los archivos de segmentoSRT_SERVER_IP
: la dirección IP o el nombre de dominio del endpoint remotoSRT_SERVER_PORT
: número de puerto del endpoint remoto.SRT_SERVER_STREAM_ID
: el ID de la emisión del endpoint remoto.
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
RTMP
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación en la que se creará el canal. Usa una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal que se va a crear. Este valor debe tener entre 1 y 63 caracteres, empezar y terminar con[a-z0-9]
, y puede contener guiones (-) entre caracteres.INPUT_ID
: identificador definido por el usuario del endpoint de entradaBUCKET_NAME
: el nombre del segmento de Cloud Storage que has creado para alojar el manifiesto de la emisión en directo y los archivos de segmentoRTMP_SERVER_IP
: la dirección IP o el nombre de dominio del endpoint remotoRTMP_SERVER_PORT
: número de puerto del endpoint remoto.RTMP_APP_NAME
: el prefijo de ruta del nombre del flujoRTMP_STREAM_KEY
: la clave de emisión del endpoint remoto.
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación.
Obtener el canal
Una vez creado el canal, usa el método projects.locations.channels.get
para consultar el estado del canal.
REST
SRT
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "inputAttachments": [ { "key": "INPUT_ID", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "activeInput": "INPUT_ID", "output": { "uri": "gs://BUCKET_NAME" }, "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 3000000, "gopDuration": "2s", "vbvSizeBits": 3000000, "vbvFullnessBits": 2700000, "entropyCoder": "cabac", "profile": "high" } }, "key": "es_video" }, { "audioStream": { "codec": "aac", "bitrateBps": 160000, "channelCount": 2, "sampleRateHertz": 48000 }, "key": "es_audio" } ], "muxStreams": [ { "key": "mux_video_ts", "container": "ts", "elementaryStreams": [ "es_video", "es_audio" ], "segmentSettings": { "segmentDuration": "2s" } } ], "manifests": [ { "fileName": "main.m3u8", "type": "HLS", "muxStreams": [ "mux_video_ts" ], "maxSegmentCount": 5, "segmentKeepDuration": "60s", "key": "manifest_hls" } ], "streamingState": "STOPPED", "distributionStreams": [ { "key": "ds1", "container": "ts", "elementaryStreams": [ "es_video", "es_audio" ] } ], "distributions": [ { "key": "pd1", "distributionStream": "ds1", "state": "NOT_READY", "srtPush": { "uri": "srt://SRT_SERVER_IP:SRT_SERVER_PORT?streamid=SRT_SERVER_STREAM_ID" } } ] }
RTMP
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "createTime": CREATE_TIME, "updateTime": UPDATE_TIME, "inputAttachments": [ { "key": "INPUT_ID", "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID" } ], "activeInput": "INPUT_ID", "output": { "uri": "gs://BUCKET_NAME" }, "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 3000000, "gopDuration": "2s", "vbvSizeBits": 3000000, "vbvFullnessBits": 2700000, "entropyCoder": "cabac", "profile": "high" } }, "key": "es_video" }, { "audioStream": { "codec": "aac", "bitrateBps": 160000, "channelCount": 2, "sampleRateHertz": 48000 }, "key": "es_audio" } ], "muxStreams": [ { "key": "mux_video_ts", "container": "ts", "elementaryStreams": [ "es_video", "es_audio" ], "segmentSettings": { "segmentDuration": "2s" } } ], "manifests": [ { "fileName": "main.m3u8", "type": "HLS", "muxStreams": [ "mux_video_ts" ], "maxSegmentCount": 5, "segmentKeepDuration": "60s", "key": "manifest_hls" } ], "streamingState": "STOPPED", "distributionStreams": [ { "key": "ds1", "container": "flv", "elementaryStreams": [ "es_video", "es_audio" ] } ], "distributions": [ { "key": "pd1", "distributionStream": "ds1", "state": "NOT_READY", "rtmpPush": { "uri": "rtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME", "streamKey": "RTMP_STREAM_KEY" } } ] }
La respuesta completa contiene los siguientes campos:
{
...
"streamingState": "STOPPED",
"distributions": [
{
...
"state": "NOT_READY"
...
}
]
...
}
Esta respuesta indica el estado de la emisión del canal y las distribuciones del canal.
Si la distribución está en estado NOT_READY
, no se puede iniciar. Debes esperar a que el estado cambie a READY
para poder empezar a distribuir tu emisión.
Crear la primera emisión de distribución puede tardar hasta 10 minutos. El estado de la distribución es independiente del estado del canal. Puedes iniciar el canal, esperar a que la distribución pase a READY
y, a continuación, iniciar la distribución.
Ahora puedes iniciar el canal.
Iniciar el canal
Usa el método projects.locations.channels.start
para iniciar el canal. Un canal debe iniciarse antes de poder aceptar flujos de entrada o generar un flujo de salida.
Crear el primer canal en una región tarda unos 10 minutos.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "start", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Para determinar si el canal se ha iniciado, obtén la información del canal como se ha hecho anteriormente. La respuesta debe contener lo siguiente:
{
...
"streamingState": "AWAITING_INPUT"
...
}
Enviar el flujo de entrada
Abre una nueva ventana de terminal. Ejecuta el siguiente comando con INPUT_STREAM_URI de la sección Comprobar el resultado:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
El canal ahora está transmitiendo, pero las distribuciones siguen detenidas.
Iniciar las distribuciones
Las distribuciones deben estar en el estado READY
para poder iniciarse. Para empezar a distribuir la salida de la emisión en directo a todos los endpoints remotos, usa el método projects.locations.channels.startdistribution
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "startdistribution", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación. Una vez que se inicia una distribución, puede estar en el estado AWAITING_INPUT
si no se ha iniciado el flujo de entrada o en el estado DISTRIBUTING
si el flujo de entrada se está distribuyendo a los endpoints especificados.
(Opcional) Iniciar un conjunto de distribuciones
Puedes iniciar un conjunto de distribuciones en lugar de todas a la vez. Enumera las distribuciones que quieras iniciar añadiendo sus claves a la lista de arrays distributionKeys
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canalDISTRIBUTION_KEYS
: una lista de claves de cadena separadas por comas (por ejemplo,"pd1"
)
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "startdistribution", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación.
Verificar que las distribuciones se están ejecutando
Para verificar que las distribuciones se han iniciado, obtén la información del canal como se ha hecho anteriormente. La respuesta debe contener lo siguiente:
{
"distributions": [
{
...
"state": "DISTRIBUTING"
...
},
...
]
}
En el servidor SRT o RTMP remoto, comprueba que el endpoint que has creado recibe datos.
Detener las distribuciones
Para dejar de distribuir la salida de la emisión en directo a todos los endpoints remotos, usa el método projects.locations.channels.stopdistribution
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "stopdistribution", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación.
(Opcional) Detener un conjunto de distribuciones
Puedes detener un conjunto de distribuciones en lugar de todas a la vez. Enumera las distribuciones que quieras detener añadiendo sus claves a la lista de arrays distributionKeys
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canalDISTRIBUTION_KEYS
: una lista de claves de cadena separadas por comas (por ejemplo,"pd1"
)
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "stopdistribution", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación.
Compatibilidad con el cifrado SRT
Si usas el protocolo SRT para distribuir la salida de la emisión en directo al endpoint remoto, la API Live Stream protege el contenido de tu emisión en directo con el cifrado AES.
Crea la contraseña y prepara el servidor SRT remoto
Antes de empezar, crea una contraseña SRT que cumpla los requisitos del servidor SRT remoto. La contraseña debe ser una cadena de entre 10 y 79 caracteres.
Para asegurarte de que el proceso de descifrado funciona, define la misma contraseña en el servidor SRT remoto. Consulta la guía de usuario del servidor SRT remoto para saber cómo hacerlo.
Añadir la contraseña a Secret Manager
La API Live Stream no acepta ni gestiona la contraseña directamente. Debes compartir la contraseña con la API Live Stream a través de Google Secret Manager.
Debes completar todos estos pasos antes de configurar el canal:
- Crea un secreto con Secret Manager.
- Configura los permisos de gestión de identidades y accesos en tu secreto para que la API Live Stream pueda acceder al contenido del secreto. Para ello, concede el rol
secretmanager.secretAccessor
a la cuenta de servicioservice-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com
(de forma similar a como la cuenta de servicio tiene acceso a tus segmentos de Cloud Storage). - Busca el nombre de recurso de la versión del secreto que has creado (por ejemplo,
projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID
). Necesitas este nombre para configurar el canal.
Configurar el canal
La versión secreta de la contraseña se especifica en SrtPushOutputEndpoint
:
{
"distributions": [
{
"key": "pd1",
"distributionStream": "ds1", // defined in a distributionStreams[] object with an MPEG-TS container
"srtPush": {
"uri": "srt://{SRT_SERVER_IP}:{SRT_SERVER_PORT}?streamid={SRT_SERVER_STREAM_ID}",
"passphrase_secret_version": "projects/PROJECT_NUMBER/secrets/key1/versions/1"
}
}
]
}
Limpieza
Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, sigue estos pasos.
Detener el canal
Usa el método projects.locations.channels.stop
para detener el canal. Debes detener el canal para poder eliminarlo.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "stop", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación.
Detener el flujo de entrada
Si has usado ffmpeg
para enviar el flujo de entrada, la conexión se romperá automáticamente cuando detengas el canal.
Eliminar el canal
Usa el método projects.locations.channels.delete
para eliminar el canal. Debes eliminar el canal antes de poder eliminar el endpoint de entrada que usa el canal.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu canal. Elige una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
CHANNEL_ID
: identificador definido por el usuario del canal
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/channels/CHANNEL_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación.
Eliminar el endpoint de entrada
Usa el método projects.locations.inputs.delete
para eliminar el endpoint de entrada.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_NUMBER
: número de tu proyecto. Google Cloud Se encuentra en el campo Número de proyecto de la página Configuración de gestión de identidades y accesos.LOCATION
: la ubicación de tu endpoint de entrada. Usa una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
us-east4
us-west1
us-west2
northamerica-northeast1
southamerica-east1
asia-east1
asia-east2
asia-south1
asia-northeast1
asia-southeast1
australia-southeast1
europe-north1
europe-west1
europe-west2
europe-west3
europe-west4
INPUT_ID
: identificador definido por el usuario del endpoint de entrada
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.video.livestream.v1.OperationMetadata", "createTime": CREATE_TIME, "target": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID", "verb": "delete", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Puedes consultar el resultado de la operación con el nuevo ID de operación.
Eliminar el segmento de Cloud Storage
En la Google Cloud consola, ve a la página Navegador de Cloud Storage.
Selecciona la casilla situada junto al segmento que has creado.
Haz clic en Eliminar.
En la ventana de diálogo que aparece, haz clic en Eliminar para eliminar el contenedor y su contenido.