Cria uma tarefa de mixagem e transcodificação de streams.
Descrição da operação
Por padrão, cada ID de aplicativo suporta no máximo 200 tarefas de ingestão de stream único e 40 tarefas de mixagem e transcodificação de streams. Para aumentar a cota, abra um ticket.
Ciclo de vida da tarefa de mixagem de streams
Início
-
Quando um streamer começa a transmitir pela primeira vez, você pode chamar StartLiveMPUTask para iniciar uma tarefa de bypass.
-
Se não houver usuários no canal, um erro de "canal inexistente" será retornado.
-
O stream de bypass é gerado apenas quando um usuário inicia a ingestão de stream. Se o usuário em uma tarefa de stream único não ingerir um stream, o stream de bypass não poderá ser reproduzido.
-
Para uma tarefa de mixagem de streams, pelo menos um usuário deve estar ingerindo um stream para que o stream de bypass seja reproduzível. A área de layout para usuários que não estão ingerindo streams exibe uma tela preta.
-
-
Você pode registrar o status da tarefa de bypass, o tipo de tarefa e os parâmetros da tarefa em seu servidor de negócios.
-
Status da tarefa: Iniciada, Parada.
-
Tipo de tarefa: Stream único, Mixagem de streams.
-
Parâmetros da tarefa: Os parâmetros de entrada mais recentes. Por exemplo, após uma chamada bem-sucedida para UpdateLiveMPUTask, registre os parâmetros mais recentes da tarefa.
-
-
Em cenários de co-streaming ou PK, se uma tarefa foi atualizada para uma tarefa de mixagem de streams e o streamer sai inesperadamente e depois reingressa no canal, seu servidor de negócios pode chamar StartLiveMPUTask para reiniciar a tarefa de mixagem de streams com base no tipo e nos parâmetros salvos.
-
Se o sistema não tiver limpado automaticamente a tarefa antes de você iniciá-la, a tarefa será iniciada com sucesso.
-
Se o sistema ainda não tiver limpado a tarefa, um código de erro Tarefa já existe será retornado.
-
Fim
-
Quando um streamer sai do canal, chame StopLiveMPUTask para parar a tarefa de bypass.
-
Se todos os usuários na tarefa saírem do canal e StopLiveMPUTask não for chamado, o sistema para automaticamente a tarefa de bypass após 2 minutos.
Limites de QPS
O limite de consultas por segundo (QPS) para um único usuário para esta API é de 500 chamadas/segundo. Se você exceder esse limite, as chamadas de API serão limitadas. Isso pode afetar seus negócios. Recomendamos que você chame esta API de forma razoável.
Experimente agora
Testar
Autorização RAM
|
Ação |
Nível de acesso |
Tipo de recurso |
Chave de condição |
Ação dependente |
|
live:StartLiveMPUTask |
create |
*Todos os recursos.
|
Nenhuma | Nenhuma |
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
| AppId |
string |
Sim |
O ID do aplicativo. Apenas um ID é suportado. Pode conter letras maiúsculas, letras minúsculas, dígitos, sublinhados (_) e hifens (-). O comprimento máximo é de 64 caracteres. |
yourAppId |
| ChannelId |
string |
Sim |
O ID do canal. Apenas um ID é suportado. Pode conter letras maiúsculas, letras minúsculas, dígitos, sublinhados (_) e hifens (-). O comprimento máximo é de 64 caracteres. |
yourChannelId |
| TaskId |
string |
Sim |
O ID da tarefa. Apenas um ID é suportado. Pode conter letras maiúsculas, letras minúsculas, dígitos, sublinhados (_) e hifens (-). O comprimento máximo é de 55 caracteres. Este ID é o identificador exclusivo para a tarefa de ingestão de bypass. Se uma tarefa com o mesmo ID ainda existir e não tiver sido limpa quando você iniciar uma nova tarefa, InvalidParam será retornado. |
yourTaskId |
| MixMode |
string |
Sim |
O modo de mixagem de streams. Valores válidos:
|
0 |
| StreamURL |
string |
Não |
A URL de ingestão ao vivo. Apenas o protocolo RTMP é suportado. Apenas uma URL é suportada. O comprimento máximo é de 2048 caracteres. Para obter informações sobre como gerar a URL, consulte URLs de ingestão e URLs de reprodução. Nota
|
rtmp://example.com/live/stream |
| MultiStreamURL |
array<object> |
Não |
Os parâmetros para ingestão em múltiplas URLs. Você pode especificar múltiplas URLs de ingestão ao vivo. Nota
Ao definir a URL de ingestão para uma tarefa, você deve configurar o parâmetro StreamURL ou o parâmetro MultiStreamURL, mas não ambos. |
|
|
object |
Não |
|||
| URL |
string |
Não |
A URL de ingestão ao vivo. Apenas o protocolo RTMP é suportado. O comprimento máximo é de 2048 caracteres. Para obter informações sobre como gerar a URL, consulte URLs de ingestão e URLs de reprodução. |
rtmp://example.com/live/stream**** |
| IsAliCdn |
boolean |
Não |
Especifica se o stream deve ser ingerido no Alibaba Cloud CDN.
Nota
O valor padrão é false. |
false |
| Region |
string |
Não |
A região onde o serviço de mixagem de streams está localizado. Valores válidos:
|
CN-Shanghai |
| MaxIdleTime |
string |
Não |
O período de tempo limite de ociosidade. Unidade: segundos. O valor deve estar no intervalo de [10, 86400]. Nota
Se você definir este parâmetro, a tarefa será parada automaticamente quando ficar ociosa por um período maior que MaxIdleTime. Se você não definir este parâmetro, a tarefa será parada imediatamente após o fechamento do canal. |
10 |
| SingleSubParams |
object |
Não |
Os parâmetros para ingestão de stream único. Este parâmetro é obrigatório quando MixMode é definido como 0. Não defina este parâmetro para mixagem e transcodificação de streams. |
|
| SourceType |
string |
Não |
O tipo de stream de entrada de vídeo no modo de ingestão de stream único. Este parâmetro é válido apenas para streams de vídeo (StreamType=2). Valores válidos:
|
camera |
| StreamType |
string |
Não |
O tipo de stream a ser ingerido no modo de ingestão de stream único. Valores válidos:
|
0 |
| UserId |
string |
Sim |
O ID do usuário cujo stream é ingerido. Apenas um stream pode ser ingerido por vez. |
yourSubUserId |
| TranscodeParams |
object |
Não |
Os parâmetros para mixagem e transcodificação de streams. Este parâmetro é obrigatório quando MixMode é definido como 1. Não defina este parâmetro para ingestão de stream único. |
|
| Background |
object |
Não |
A imagem de fundo global para o stream mixado. |
|
| RenderMode |
string |
Não |
O modo de exibição do vídeo de saída. Valores válidos:
|
1 |
| URL |
string |
Não |
A URL da imagem de fundo global. O comprimento máximo é de 2048 caracteres. |
yourImageUrl |
| EncodeParams |
object |
Não |
Os parâmetros de codificação para o stream de saída. |
|
| AudioOnly |
string |
Não |
Especifica se o stream é apenas de áudio. Valores válidos:
|
false |
| AudioBitrate |
string |
Não |
A taxa de bits de áudio. Unidade: kbps. O valor deve estar no intervalo de [8, 500]. |
128 |
| AudioChannels |
string |
Não |
O número de canais de áudio. Valores válidos: 1, 2. |
2 |
| AudioSampleRate |
string |
Não |
A taxa de amostragem de áudio. Unidade: Hz. Valores válidos: 8000, 16000, 32000, 44100, 48000. |
44100 |
| VideoCodec |
string |
Não |
O formato de codificação de vídeo. Valores válidos:
|
H.264 |
| VideoBitrate |
string |
Não |
A taxa de bits de vídeo. Unidade: kbps. O valor deve estar no intervalo de [1, 10000]. |
3500 |
| VideoFramerate |
string |
Não |
A taxa de quadros de vídeo. Unidade: fps. O valor deve estar no intervalo de [1, 60]. |
25 |
| VideoGop |
string |
Não |
O tamanho do GOP de vídeo. O valor deve estar no intervalo de [1, 60]. |
20 |
| VideoHeight |
string |
Não |
A altura do vídeo. Unidade: pixels. O valor deve estar no intervalo de [0, 1920]. |
1000 |
| VideoWidth |
string |
Não |
A largura do vídeo. Unidade: pixels. O valor deve estar no intervalo de [0, 1920]. |
1920 |
| EnhancedParam |
string |
Não |
Os parâmetros de codificação aprimorada. Esta é uma string JSON. As configurações opcionais suportadas incluem profile e preset.
Nota
Por exemplo, "superfast" é usado principalmente para comunicação em tempo real. Se você não for um especialista em codificadores, não defina esta opção. |
{"profile": "high", "preset": "veryfast"} |
| Layout |
object |
Não |
As informações de layout de vídeo. Nota
Para transcodificação de vídeo, você deve especificar as informações de layout de vídeo, incluindo coordenadas (X, Y), dimensões do painel (Width, Height) e ordem de empilhamento (ZOrder). Para transcodificação apenas de áudio, não especifique as informações de layout de vídeo. |
|
| UserPanes |
array<object> |
Não |
As informações sobre os painéis de usuário no stream mixado. |
|
|
array<object> |
Não |
As informações sobre os painéis de usuário no stream mixado. |
||
| UserInfo |
object |
Não |
As informações sobre o usuário correspondente a este painel. Se você não definir este parâmetro, o sistema o preencherá automaticamente com base na ordem em que os streamers ingressam no canal. Nota
|
|
| SourceType |
string |
Não |
O tipo de stream de entrada de vídeo no modo de mixagem e transcodificação de streams. Este parâmetro é válido apenas para streams de vídeo (StreamType=2). Valores válidos:
|
camera |
| ChannelId |
string |
Não |
O ID do canal onde o usuário está localizado. Você não precisa definir este parâmetro para usuários no mesmo canal. Para mixagem de streams entre canais, defina este parâmetro. |
yourChannelId |
| UserId |
string |
Não |
O ID do usuário. |
yourSubUserId |
| Height |
string |
Não |
A altura do painel, como uma porcentagem normalizada. |
0.2632 |
| Width |
string |
Não |
A largura do painel, como uma porcentagem normalizada. |
0.3564 |
| X |
string |
Não |
A coordenada X, como uma porcentagem normalizada. |
0.2456 |
| Y |
string |
Não |
A coordenada Y, como uma porcentagem normalizada. |
0.3789 |
| ZOrder |
string |
Não |
A ordem de empilhamento. 0 é a camada inferior. A camada 1 fica acima da camada 0, e assim por diante. |
0 |
| BackgroundImageUrl |
string |
Não |
A URL da imagem de fundo para o painel de vídeo. O comprimento máximo é de 2048 caracteres. Quando um usuário desliga a câmera ou não ingressou no canal, esta imagem é exibida em sua posição de layout. |
yourImageUrl |
| RenderMode |
string |
Não |
O modo de exibição do painel de vídeo de saída. Valores válidos:
|
1 |
| UserInfos |
array<object> |
Não |
As informações sobre os usuários a serem assinados para mixagem de streams. Se você não especificar usuários, todos os usuários serão incluídos no stream mixado. |
|
|
object |
Não |
As informações do usuário para mixagem de streams. |
||
| SourceType |
string |
Não |
O tipo de stream de entrada de vídeo a ser assinado para mixagem de streams. Este parâmetro é válido apenas para streams de vídeo (StreamType=2). Valores válidos:
|
camera |
| StreamType |
string |
Não |
O tipo de stream a ser assinado para mixagem de streams. Valores válidos:
|
0 |
| ChannelId |
string |
Não |
O ID do canal onde o usuário assinado está localizado. Você não precisa definir este parâmetro para usuários no mesmo canal. Para mixagem de streams entre canais, defina este parâmetro. |
yourChannelId |
| UserId |
string |
Sim |
O ID do usuário a ser assinado para mixagem de streams. |
yourSubUserId |
| SeiParams |
object |
Não |
Os parâmetros de configuração de SEI. |
|
| LayoutVolume |
object |
Não |
O SEI de layout e volume. O conteúdo deste parâmetro pode estar vazio, o que significa que o SEI de layout e volume padrão é transportado. |
|
| FollowIdr |
string |
Não |
Especifica se deve garantir que o SEI seja transportado ao enviar um quadro-chave IDR. Valores válidos:
|
0 |
| Interval |
string |
Não |
O intervalo de envio de SEI. Unidade: milissegundos. O valor deve estar no intervalo de [1000, 5000]. |
1000 |
| PassThrough |
object |
Não |
O SEI de pass-through. |
|
| FollowIdr |
string |
Não |
Especifica se deve garantir que o SEI seja transportado ao enviar um quadro-chave IDR. Valores válidos:
|
0 |
| Interval |
string |
Não |
O intervalo de envio de SEI. Unidade: milissegundos. O valor deve estar no intervalo de [1000, 5000]. |
1000 |
| PayloadContent |
string |
Não |
O conteúdo do payload do SEI de pass-through. |
yourPayloadContent |
| PayloadContentKey |
string |
Não |
A chave correspondente ao conteúdo do payload do SEI de pass-through. Se não for definida, a chave padrão é udd. |
yourPayloadContentKey |
| PayloadType |
string |
Não |
O payload_type personalizado da mensagem SEI. O valor deve estar no intervalo de 100-254. Se não for definido, o payload_type padrão é 5. |
100 |
SEI de layout e volume
| Parâmetro | Descrição |
| canvas | Informações da tela. Parâmetros: - w: Largura da tela em pixels. - h: Altura da tela em pixels. - bgnd: Cor de fundo da tela, como um número inteiro hexadecimal no formato RGB. |
| stream | Informações do stream de vídeo. Parâmetros: - uid: ID de usuário do streamer. - paneid: ID do painel da região, no intervalo de [0, 8]. - zorder: Ordem de empilhamento da região, no intervalo de [0, 99]. - x: Coordenada X da região na tela, como uma porcentagem normalizada. - y: Coordenada Y da região na tela, como uma porcentagem normalizada. - w: Largura da região, como uma porcentagem normalizada. - h: Altura da região, como uma porcentagem normalizada. - type: Tipo de stream de vídeo na região. 0: Câmera. 1: Compartilhamento de tela. - status: Status do stream de vídeo na região. 0: Ainda não puxado. 1: Puxado. - muted: Status de mudo do streamer. 0: Não mutado. 1: Mutado. Em um cenário de PK, se o streamer A mutar o streamer B, o campo muted para o streamer B mostra o status de mutado.- vol: Volume do streamer em decibéis, no intervalo de [0, 255]. - vad: Detecção de atividade de voz. O valor está no intervalo de [0, 150]. 150 indica que a voz foi detectada. Um valor diferente de 150 indica o tempo de decaimento da voz para o silêncio. |
| ts | O carimbo de data/hora do sistema operacional quando estas informações foram geradas, em milissegundos. |
| ver | A versão do formato SEI, como 1.0.0.20220915. |
| udd | Um evento personalizado baseado em cenário enviado através do parâmetro PassThrough. O conteúdo é especificado pelo parâmetro PayloadContent. |
Quando um usuário puxa um stream ingerido, os dados de mídia de streaming contêm informações SEI. Você pode usar este recurso para passar informações personalizadas. As informações SEI podem ser recuperadas dos dados de quadro de vídeo durante a decodificação do stream de vídeo. Para o formato específico, consulte o parâmetro PassThrough.
Exemplo para um cenário de co-streaming:
Se houver apenas um streamer, a coleção stream nas informações SEI que o visualizador recebe contém informações para apenas um membro. Se o streamer estiver em uma sessão de co-streaming ou PK, a coleção stream contém informações para múltiplos membros.
Por exemplo, quando o streamer streamer111 está transmitindo sozinho, o formato de quadro SEI que o visualizador recebe é o seguinte:{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696105170}
Quando o streamer streamer111 está em co-streaming com o visualizador viewer222, o formato de quadro SEI que o visualizador recebe é o seguinte:{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":0,"zorder":1,"x":0,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":1,"vad":119},{"uid":"viewer222","paneid":1,"zorder":1,"x":0.5018382,"y":0.25,"w":0.5,"h":0.5,"type":0,"status":1,"muted":0,"vol":60,"vad":123}],"ver":"1.0.0.20220915","ts":1697696106230}
Ao verificar o número de elementos na matriz stream, você pode determinar se o layout ao vivo mudou. Se a matriz stream tiver um elemento, um único streamer está ingerindo um stream. Se a matriz stream tiver mais de um elemento, o streamer está em uma sessão de co-streaming ou PK. As informações de layout para cada membro indicam sua posição específica no layout do stream mixado.
SEI de pass-through
-
Para usar SEI personalizado, você pode chamar o comando StartLiveMPUTask para iniciar uma tarefa de mixagem e ingestão de streams e especificar
PayloadContentno parâmetroPassThrough. Você também pode chamar o comando UpdateLiveMPUTask para atualizar a tarefa e especificarPayloadContentno parâmetroPassThrough. -
O SEI personalizado pode ser enviado periodicamente. Você pode definir o período usando o parâmetro
IntervalemPassThrough. A unidade é milissegundos. -
O SEI personalizado também pode ser enviado com quadros-chave. Você pode definir isso usando o parâmetro
FollowIdremPassThrough.-
Você pode enviar SEI tanto periodicamente quanto com quadros-chave. Por exemplo,
Interval:1000eFollowIdr: 1significa que o SEI personalizado é enviado a cada 1000 ms e também com cada quadro-chave. -
Se você não definir
IntervalouFollowIdr, o SEI personalizado será enviado apenas uma vez quando a API for chamada.
-
Por exemplo, quando o streamer streamer111 está transmitindo sozinho, você pode chamar o comando UpdateLiveMPUTask para enviar SEI periódico. No parâmetro PassThrough, defina Interval como 1000, FollowIdr como 0 e PayloadContent como "hello world". Uma mensagem SEI personalizada é então enviada a cada 1000 ms. O formato de quadro SEI que o visualizador recebe é o seguinte:{"canvas":{"w":1920,"h":1080,"bgnd":0},"stream":[{"uid":"streamer111","paneid":-1,"zorder":0,"x":0,"y":0,"w":0,"h":0,"type":0,"status":1,"muted":0,"vol":0,"vad":0}],"ver":"1.0.0.20220915","ts":1697696109876,"udd":"hello world"}
Mixagem de streams de múltiplos usuários entre canais
Para mixar streams de múltiplos streamers em vários canais e ingerir o stream mixado no serviço de transmissão ao vivo, você deve fornecer o UserID e o ChannelID do streamer que inicia a chamada entre canais, juntamente com os UserIDs dos outros participantes, como parâmetros de entrada ao criar a tarefa de mixagem de streams. Veja o seguinte exemplo:
Em um cenário de PK ao vivo, o streamer userA no canal channelA inicia um PK entre canais com o streamer userB no canal channelB usando uma API de cliente. O stream mixado de ambos os streamers é enviado para os visualizadores no canal channelA. Neste caso, os parâmetros de canal e usuário para criar a tarefa de mixagem de streams são especificados da seguinte forma:
-
ChannelID: Especifique
channelA. -
UserInfos->UserId: Especifique
userAeuserBrespectivamente.
Antes de criar uma tarefa de mixagem de streams de múltiplos usuários entre canais, uma chamada entre canais deve ser iniciada através de um kit de desenvolvimento de software (SDK) de cliente. Se os usuários em canais diferentes não estiverem em uma chamada, você não poderá criar uma tarefa de mixagem de streams entre canais. Para obter mais informações sobre como iniciar uma chamada entre canais, consulte Assinatura entre canais.
Elementos de resposta
|
Elemento |
Tipo |
Descrição |
Exemplo |
|
object |
O ID da solicitação. |
||
| RequestId |
string |
O ID da solicitação. |
0F72851F-5DC1-1979-9B2C-450040316C3E |
Exemplos
Resposta de sucesso
JSON formato
{
"RequestId": "0F72851F-5DC1-1979-9B2C-450040316C3E"
}
Códigos de erro
|
Código de status HTTP |
Código de erro |
Mensagem de erro |
Descrição |
|---|---|---|---|
| 400 | InvalidParam | %s. | Falha na validação do parâmetro. |
| 400 | InvalidAppId | %s, please check and try again later. | O AppId é inválido. Verifique e tente novamente. |
| 400 | MissingParam | %s, please check and try again later. | Parâmetros obrigatórios estão ausentes. Verifique e tente novamente. |
| 500 | InternalError | InternalError | |
| 403 | OperationDenied | Your account has not enabled the Live service | |
| 403 | Forbidden | %s, please check and try again later. | Você não tem as permissões necessárias. Verifique e tente novamente. |
Consulte Códigos de Erro para uma lista completa.
Notas de versão
Consulte Notas de Versão para uma lista completa.