Nesta página, explicamos como distribuir a saída da transmissão ao vivo para endpoints remotos usando o protocolo Secure Reliable Transport (SRT) ou o Real-Time Messaging Protocol (RTMP). O SRT e o RTMP são usados no modo push para enviar o stream aos endpoints. Os formatos de contêiner compatíveis são MPEG-TS para SRT e FLV para RTMP.
Antes de começar
Esta página pressupõe que você concluiu as etapas na seção Antes de começar do Guia de início rápido para uma transmissão ao vivo HLS.
Dependendo do protocolo de distribuição escolhido, crie um endpoint SRT ou RTMP no provedor em que você quer receber a saída no modo push. O formato do URI do endpoint varia de acordo com o 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
ou apenasrtmp://RTMP_SERVER_IP:RTMP_SERVER_PORT/RTMP_APP_NAME
SRT_SERVER_IP e RTMP_SERVER_IP podem ser um endereço IP ou um nome de domínio.
Criar o endpoint de entrada
Para criar o endpoint de entrada, use o método
projects.locations.inputs.create
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que o endpoint de entrada será criado. Use uma das regiões compatíveis.Mostrar locaisus-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
: um identificador definido pelo usuário para o novo endpoint de entrada a ser criado (para onde você envia seu stream de entrada). Esse valor precisa ter de 1 a 63 caracteres, começar e terminar com[a-z0-9]
e pode conter traços (-) entre os caracteres. Por exemplo,my-input
.
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
Copie a OPERATION_ID retornada para usar na próxima seção.
Verificar o resultado
Use o método projects.locations.operations.get
para verificar se
o endpoint de entrada foi criado. Se a resposta contiver "done: false"
,
repita o comando até que a resposta contenha "done: true"
. A criação do primeiro endpoint de entrada em uma região pode levar até 10 minutos.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que o endpoint de entrada está localizado. Use uma das regiões compatíveis.Mostrar locaisus-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
: o identificador da operação
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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" } }
Encontre o campo uri
e copie o INPUT_STREAM_URI retornado para usar mais tarde na seção Enviar o fluxo de entrada.
Criar o canal
Para criar o canal, use o método
projects.locations.channels.create
.
Observe o seguinte na configuração do canal:
- A matriz
distributionStreams
contém as configurações de multiplexação de fluxos para distribuições. Cada objeto
DistributionStream
precisa incluir um campokey
,container
eelementaryStreams
.{ "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" ] } ] }
A matriz
distributions
lista as configurações de distribuição, incluindo os endpoints remotos.Defina o campo
distributionStream
no objetoDistribution
como okey
de um objetoDistributionStream
.Para a distribuição de SRT, defina o
uri
no objetoSrtPushOutputEndpoint
como um endpoint de SRT que você criou. Para distribuição RTMP, defina ouri
no objetoRtmpPushOutputEndpoint
como um endpoint RTMP que você criou.{ "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 legendas geradas e traduzidas com IA, consulte o guia de configuração de legendas e traduções automáticas.
Os exemplos a seguir usam apenas um objeto DistributionStream
e um objeto Distribution
.
REST
SRT
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que o canal será criado. Use uma das regiões compatíveis.Mostrar locaisus-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
: um identificador definido pelo usuário para o canal a ser criado. Esse valor precisa ter de 1 a 63 caracteres, começar e terminar com[a-z0-9]
e pode conter traços (-) entre os caracteres.INPUT_ID
: o identificador definido pelo usuário para o endpoint de entradaBUCKET_NAME
: o nome do bucket do Cloud Storage criado para armazenar o manifesto e os arquivos de segmento da transmissão ao vivo.SRT_SERVER_IP
: o endereço IP ou nome de domínio do endpoint remotoSRT_SERVER_PORT
: o número da porta do endpoint remotoSRT_SERVER_STREAM_ID
: o ID do fluxo do endpoint remoto
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que o canal será criado. Use uma das regiões compatíveis.Mostrar locaisus-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
: um identificador definido pelo usuário para o canal a ser criado. Esse valor precisa ter de 1 a 63 caracteres, começar e terminar com[a-z0-9]
e pode conter traços (-) entre os caracteres.INPUT_ID
: o identificador definido pelo usuário para o endpoint de entradaBUCKET_NAME
: o nome do bucket do Cloud Storage criado para armazenar o manifesto e os arquivos de segmento da transmissão ao vivo.RTMP_SERVER_IP
: o endereço IP ou nome de domínio do endpoint remotoRTMP_SERVER_PORT
: o número da porta do endpoint remotoRTMP_APP_NAME
: o prefixo do caminho para o nome do fluxoRTMP_STREAM_KEY
: a chave de stream do endpoint remoto.
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID.
Acessar o canal
Depois de criar o canal, use o método
projects.locations.channels.get
para consultar o estado
do canal.
REST
SRT
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canal
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canal
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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" } } ] }
A resposta completa contém os seguintes campos:
{
...
"streamingState": "STOPPED",
"distributions": [
{
...
"state": "NOT_READY"
...
}
]
...
}
Essa resposta indica o estado de streaming do canal e as distribuições dele.
Se a distribuição estiver em um estado NOT_READY
, ela não poderá ser iniciada. Aguarde até que o estado mude para READY
para começar a distribuir sua transmissão.
A criação do primeiro fluxo de distribuição pode levar até 10 minutos. O estado da distribuição é independente do estado do canal. Você pode iniciar o canal e esperar que a distribuição se torne READY
para depois iniciar a distribuição.
Agora você pode iniciar o canal.
Iniciar o canal
Use o método projects.locations.channels.start
para iniciar o
canal. Um canal precisa ser iniciado antes de aceitar fluxos de entrada ou gerar um fluxo de saída.
Iniciar o primeiro canal em uma região leva cerca de 10 minutos.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canal
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 se o canal foi iniciado, receba as informações do canal como feito anteriormente. A resposta precisa conter o seguinte:
{
...
"streamingState": "AWAITING_INPUT"
...
}
Enviar o stream de entrada
Abra uma nova janela do terminal. Execute o comando a seguir usando INPUT_STREAM_URI da seção Verificar o resultado:
ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv INPUT_STREAM_URI
O canal está transmitindo, mas as distribuições ainda estão paradas.
Iniciar as distribuições
As distribuições precisam estar no estado READY
para serem iniciadas. Para começar a
distribuir a saída da transmissão ao vivo para todos os endpoints remotos, use o
método projects.locations.channels.startdistribution
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canal
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID. Depois de iniciar uma distribuição, ela pode estar no estado AWAITING_INPUT
se o fluxo de entrada não for iniciado ou no estado DISTRIBUTING
se o fluxo de entrada estiver sendo distribuído para os endpoints especificados.
(Opcional) Iniciar um conjunto de distribuições
Você pode iniciar um conjunto de distribuições em vez de todas de uma só vez. Liste as distribuições que você quer iniciar adicionando as chaves delas à lista de matriz distributionKeys
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canalDISTRIBUTION_KEYS
: uma lista separada por vírgulas de chaves de string (por exemplo,"pd1"
)
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID.
Verificar se as distribuições estão em execução
Para verificar se as distribuições foram iniciadas, receba as informações do canal como feito anteriormente. A resposta precisa conter o seguinte:
{
"distributions": [
{
...
"state": "DISTRIBUTING"
...
},
...
]
}
No servidor SRT ou RTMP remoto, verifique se o endpoint criado está recebendo dados.
Parar as distribuições
Para interromper a distribuição da saída da transmissão ao vivo para todos os endpoints remotos, use o
método projects.locations.channels.stopdistribution
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canal
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID.
(Opcional) Parar um conjunto de distribuições
Você pode interromper um conjunto de distribuições em vez de todas de uma só vez. Liste as distribuições que você quer interromper adicionando as chaves delas à lista de matriz distributionKeys
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canalDISTRIBUTION_KEYS
: uma lista separada por vírgulas de chaves de string (por exemplo,"pd1"
)
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID.
Suporte à criptografia SRT
Se você usar o protocolo SRT para distribuir a saída da transmissão ao vivo para o endpoint remoto, a API Live Stream vai proteger o conteúdo com criptografia AES.
Criar a senha e preparar o servidor SRT remoto
Antes de começar, crie uma senha do SRT que esteja em conformidade com o servidor SRT remoto. Normalmente, a senha precisa ter entre 10 e 79 caracteres.
Para garantir que o processo de descriptografia funcione, defina a mesma senha no servidor SRT remoto. Consulte o guia do usuário do servidor SRT remoto para saber como fazer isso.
Adicionar a senha ao Secret Manager
A API Live Stream não aceita nem gerencia a senha diretamente. Você precisa compartilhar a senha com a API Live Stream usando o Google Secret Manager.
Conclua todas estas etapas antes de configurar o canal:
- Crie um secret com o Secret Manager.
- Configure as permissões do Identity and Access Management no seu secret para que a
API Live Stream possa acessar o conteúdo dele. Para fazer isso, conceda o papel
secretmanager.secretAccessor
à conta de serviçoservice-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com
. Isso é semelhante a como a conta de serviço tem acesso aos seus buckets do Cloud Storage. - Encontre o nome do recurso da versão do secret que você criou
(por exemplo,
projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID
). Você precisa desse nome para configurar o canal.
Configurar o canal
A versão secreta da senha é especificada no
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"
}
}
]
}
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Interromper o canal
Use o método projects.locations.channels.stop
para interromper o
canal. É necessário interromper o canal antes de excluí-lo.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canal
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID.
Parar o stream de entrada
Se você usou ffmpeg
para enviar o fluxo de entrada, a conexão será interrompida automaticamente depois que você parar o canal.
Excluir o canal
Use o método projects.locations.channels.delete
para excluir
o canal. É preciso excluir o canal antes de excluir o endpoint
de entrada usado por ele.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que seu canal está localizado. Use uma das regiões compatíveisMostrar locaisus-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
: um identificador definido pelo usuário para o canal
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID.
Excluir o endpoint de entrada
Use o método projects.locations.inputs.delete
para excluir o endpoint de entrada.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_NUMBER
: o número do seu projeto Google Cloud , que está localizado no campo Número do projeto na página Configurações do IAMLOCATION
: o local em que o endpoint de entrada está localizado. Use uma das regiões compatíveis.Mostrar locaisus-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
: o identificador definido pelo usuário para o endpoint de entrada
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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 }
É possível verificar o resultado da operação usando o novo ID.
Excluir o bucket do Cloud Storage
No console Google Cloud , acesse a página "Navegador do Cloud Storage".
Marque a caixa de seleção ao lado do bucket criado.
Clique em Excluir.
Na caixa de diálogo exibida, clique em Excluir para excluir o bucket e o conteúdo dele.