Esta página explica como distribuir o resultado da stream em direto para pontos finais remotos através do protocolo de transporte fiável seguro (SRT) ou do protocolo de mensagens em tempo real (RTMP). O SRT e o RTMP são usados no modo push para enviar a stream para os pontos finais. Os formatos de contentor suportados são MPEG-TS para SRT e FLV para RTMP.
Antes de começar
Esta página pressupõe que concluiu os passos na secção Antes de começar do Início rápido para uma stream em direto HLS.
Consoante a sua escolha do protocolo de distribuição, crie um ponto final SRT ou RTMP no fornecedor onde quer receber a saída no modo push. O formato do URI do ponto final varia consoante 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_KEYou 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.
Crie o ponto final de entrada
Para criar o ponto final de entrada, use o método projects.locations.inputs.create.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização na qual criar o ponto final de entrada; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
INPUT_ID: um identificador definido pelo utilizador para o novo ponto final de entrada a criar (para o qual envia a sua stream de entrada). Este valor tem de ter entre 1 e 63 carateres, começar e terminar com[a-z0-9]e pode conter travessões (-) entre carateres. Por exemplo,my-input.
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 o OPERATION_ID devolvido para usar na secção seguinte.
Verifique o resultado
Use o método projects.locations.operations.get para verificar se o ponto final 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 ponto final de entrada numa região pode demorar até 10 minutos.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu ponto final de entrada está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
OPERATION_ID: o identificador da operação
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 valor INPUT_STREAM_URI devolvido para usar mais tarde na secção Envie o fluxo de entrada.
Crie o canal
Para criar o canal, use o método
projects.locations.channels.create.
Tenha em atenção o seguinte na configuração do canal:
- A matriz
distributionStreamscontém as definições de multiplexagem de streams para distribuições. Cada objeto
DistributionStreamtem de incluir um campokey,containereelementaryStreams.{ "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
distributionsapresenta as configurações de distribuição, que incluem os pontos finais remotos.Defina o campo
distributionStreamno objetoDistributionpara okeyde um objetoDistributionStream.Para a distribuição de SRT, defina o
urino objetoSrtPushOutputEndpointpara um ponto final de SRT que criou. Para a distribuição RTMP, defina ourino objetoRtmpPushOutputEndpointpara um ponto final RTMP que 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 pela IA e legendas traduzidas, consulte o guia de configuração de legendas e traduções automáticas.
Os exemplos seguintes usam apenas um objeto DistributionStream
e um objeto Distribution.
REST
SRT
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização na qual criar o canal; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal a criar; este valor tem de ter entre 1 e 63 carateres, começar e terminar com[a-z0-9]e pode conter traços (-) entre carateresINPUT_ID: o identificador definido pelo utilizador para o ponto final de entradaBUCKET_NAME: o nome do contentor do Cloud Storage que criou para conter o manifesto da stream em direto e os ficheiros de segmentosSRT_SERVER_IP: o endereço IP ou o nome de domínio do ponto final remotoSRT_SERVER_PORT: o número da porta do ponto final remotoSRT_SERVER_STREAM_ID: o ID da stream do ponto final remoto
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização na qual criar o canal; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal a criar; este valor tem de ter entre 1 e 63 carateres, começar e terminar com[a-z0-9]e pode conter traços (-) entre carateresINPUT_ID: o identificador definido pelo utilizador para o ponto final de entradaBUCKET_NAME: o nome do contentor do Cloud Storage que criou para conter o manifesto da stream em direto e os ficheiros de segmentosRTMP_SERVER_IP: o endereço IP ou o nome de domínio do ponto final remotoRTMP_SERVER_PORT: o número da porta do ponto final remotoRTMP_APP_NAME: o prefixo do caminho para o nome da streamRTMP_STREAM_KEY: a chave da stream do ponto final remoto
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação.
Aceda ao 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 qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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 qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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"
...
}
]
...
}
Esta resposta indica o estado de streaming do canal e as distribuições do canal.
Se a distribuição estiver no NOT_READY estado, não é possível iniciar a distribuição. Tem de aguardar até que o estado mude para READY para poder
começar a distribuir a sua stream.
A criação da primeira stream de distribuição pode demorar até 10 minutos. O estado da distribuição é independente do estado do canal. Pode iniciar o canal e aguardar que a distribuição fique READY e, em seguida, iniciar a distribuição.
Agora, pode iniciar o canal.
Inicie o canal
Use o método projects.locations.channels.start para iniciar o canal. Um canal tem de ser iniciado antes de poder aceitar streams de entrada ou gerar uma stream de saída.
O início do primeiro canal numa região demora cerca de 10 minutos.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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, aceda às informações do canal como fez anteriormente. A resposta deve conter o seguinte:
{
...
"streamingState": "AWAITING_INPUT"
...
}
Envie a stream de entrada
Abra uma nova janela de terminal. Execute o seguinte comando, usando INPUT_STREAM_URI da secção Verifique 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á agora em streaming, mas as distribuições continuam paradas.
Inicie as distribuições
As distribuições têm de estar no estado READY para serem iniciadas. Para começar a distribuir o resultado da stream em direto a todos os pontos finais remotos, use o método projects.locations.channels.startdistribution.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação. Após iniciar uma distribuição, pode estar no estado AWAITING_INPUT se a stream de entrada não for iniciada ou no estado DISTRIBUTING se a stream de entrada estiver a ser distribuída para os pontos finais especificados.
(Opcional) Inicie um conjunto de distribuições
Pode iniciar um conjunto de distribuições em vez de todas de uma só vez. Liste as distribuições que quer iniciar adicionando as respetivas chaves à lista de matriz distributionKeys.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canalDISTRIBUTION_KEYS: uma lista separada por vírgulas de chaves de strings (por exemplo,"pd1")
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação.
Confirme se as distribuições estão em execução
Para verificar se as distribuições foram iniciadas, aceda às informações do canal, como fez anteriormente. A resposta deve conter o seguinte:
{
"distributions": [
{
...
"state": "DISTRIBUTING"
...
},
...
]
}
No servidor SRT ou RTMP remoto, verifique se o ponto final que criou está a receber dados.
Pare as distribuições
Para parar de distribuir o resultado da stream em direto a todos os pontos finais remotos, use o método projects.locations.channels.stopdistribution.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação.
(Opcional) Pare um conjunto de distribuições
Pode parar um conjunto de distribuições em vez de todas de uma só vez. Indique as distribuições que quer parar adicionando as respetivas chaves à lista de matriz distributionKeys.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canalDISTRIBUTION_KEYS: uma lista separada por vírgulas de chaves de strings (por exemplo,"pd1")
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação.
Suporte de encriptação SRT
Se usar o protocolo SRT para distribuir a saída da stream em direto para o ponto final remoto, a API Live Stream protege o conteúdo da stream em direto com encriptação AES.
Crie a frase de acesso e prepare o servidor SRT remoto
Antes de começar, crie uma frase secreta SRT que esteja em conformidade com o servidor SRT remoto. Normalmente, a frase secreta deve ser uma string de 10 a 79 carateres.
Certifique-se de que o processo de desencriptação funciona definindo a mesma frase de acesso no servidor SRT remoto. Consulte o manual do utilizador do servidor SRT remoto para saber como o fazer.
Adicione a frase secreta ao Secret Manager
A API Live Stream não aceita nem gere a frase secreta diretamente. Tem de partilhar a frase secreta com a API Live Stream através do Google Secret Manager.
Tem de concluir todos estes passos antes de configurar o canal:
- Crie um Secret com o Secret Manager.
- Configure as autorizações da gestão de identidade e de acesso no seu segredo para que a
API Live Stream possa aceder ao conteúdo secreto. Para o fazer, conceda a função
secretmanager.secretAccessorà conta de serviçoservice-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com(isto é semelhante à forma como a conta de serviço tem acesso aos seus contentores do Cloud Storage). - Encontre o nome do recurso da versão secreta que criou (por exemplo,
projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/VERSION_ID). Precisa deste nome para configurar o canal.
Configure o canal
A versão do Secret da expressão secreta é especificada em
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 incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.
Parar o canal
Use o método projects.locations.channels.stop para parar o canal. Tem de parar o canal antes de o poder eliminar.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação.
Pare a stream de entrada
Se usou ffmpeg para enviar a stream de entrada, a ligação é automaticamente
interrompida depois de parar o canal.
Eliminar o canal
Use o método projects.locations.channels.delete para eliminar o canal. Tem de eliminar o canal antes de poder eliminar o ponto final de entrada usado pelo canal.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu canal está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
CHANNEL_ID: um identificador definido pelo utilizador para o canal
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação.
Elimine o ponto final de entrada
Use o método projects.locations.inputs.delete para eliminar o ponto final de entrada.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_NUMBER: o número do seu Google Cloud projeto; encontra-se no campo Número do projeto na página Definições do IAMLOCATION: a localização onde o seu ponto final de entrada está localizado; use uma das regiões suportadasMostrar localizaçõesus-central1us-east1us-east4us-west1us-west2northamerica-northeast1southamerica-east1asia-east1asia-east2asia-south1asia-northeast1asia-southeast1australia-southeast1europe-north1europe-west1europe-west2europe-west3europe-west4
INPUT_ID: o identificador definido pelo utilizador para o ponto final de entrada
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{
"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
}
Pode verificar o resultado da operação através do novo ID da operação.
Elimine o contentor do Cloud Storage
Na Google Cloud consola, aceda à página do navegador do Cloud Storage.
Selecione a caixa de verificação junto ao grupo criado.
Clique em Eliminar.
Na janela de diálogo apresentada, clique em Eliminar para eliminar o contentor e o respetivo conteúdo.