Todos os produtos
Search
Central de documentação

ApsaraVideo Live:StartLiveMPUTask

Última atualização: Jun 28, 2026

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 entra novamente 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 da tarefa.

    • 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

Experimente esta API no OpenAPI Explorer, sem necessidade de assinatura manual. Chamadas bem-sucedidas geram automaticamente código SDK correspondente aos seus parâmetros. Faça o download com segurança de credenciais integrada para uso local.

Testar

Autorização RAM

A tabela abaixo descreve a autorização necessária para chamar esta API. Você pode defini-la em uma política do Resource Access Management (RAM). As colunas da tabela estão detalhadas abaixo:

  • Ação: As ações que podem ser usadas no elemento Action das instruções de política de permissão do RAM para conceder permissões para executar a operação.

  • API: A API que você pode chamar para executar a ação.

  • Nível de acesso: O nível de acesso predefinido concedido para cada API. Valores válidos: create, list, get, update e delete.

  • Tipo de recurso: O tipo de recurso que suporta autorização para executar a ação. Indica se a ação suporta permissão em nível de recurso. O recurso especificado deve ser compatível com a ação. Caso contrário, a política será ineficaz.

    • Para APIs com permissões em nível de recurso, os tipos de recursos obrigatórios são marcados com um asterisco (*). Especifique o Nome de Recurso Alibaba Cloud (ARN) correspondente no elemento Resource da política.

    • Para APIs sem permissões em nível de recurso, é exibido como Todos os Recursos. Use um asterisco (*) no elemento Resource da política.

  • Chave de condição: As chaves de condição definidas pelo serviço. A chave permite controle granular, aplicando-se somente a ações ou a ações associadas a recursos específicos. Além das chaves de condição específicas do serviço, o Alibaba Cloud fornece um conjunto de chaves de condição comuns aplicáveis a todos os serviços compatíveis com RAM.

  • Ação dependente: As ações dependentes necessárias para executar a ação. Para concluir a ação, o usuário RAM ou a função RAM deve ter permissões para executar todas as ações dependentes.

Ação

Nível de acesso

Tipo de recurso

Chave de condição

Ação dependente

live:StartLiveMPUTask

create

*All Resource

*

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: Ingestão de stream único. O stream único original é ingerido sem mixagem ou transcodificação de streams. Você não precisa configurar parâmetros de mixagem e transcodificação de streams.

  • 1 (padrão): Mixagem e transcodificação de streams.

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
  • Para nomes de domínio com proteção contra hotlink ativada, a URL de ingestão deve incluir um token de acesso.

  • Não use a mesma StreamURL em tarefas diferentes ao mesmo tempo.

  • Não use a mesma StreamURL dentro de 10 segundos após a parada de uma tarefa.

rtmp://example.com/live/stream

MultiStreamURL

array<object>

Não

Os parâmetros para ingestão em múltiplas URLs. Você pode especificar várias 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 para o Alibaba Cloud CDN.

  • false: Ingerir para um CDN não Alibaba Cloud.

  • true: Ingerir para o 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: Xangai.

  • AP-Singapore(padrão): Cingapura.

  • EMAA-Saudi: Arábia Saudita.

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 (padrão): Stream da câmera.

  • shareScreen: Stream de compartilhamento de tela.

camera

StreamType

string

Não

O tipo de stream a ser ingerido no modo de ingestão de stream único. Valores válidos:

  • 0 (padrão): Ingerir o stream original.

  • 1: Ingerir apenas o stream de áudio.

  • 2: Ingerir apenas o stream de vídeo.

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:

  • 0: Dimensionar e exibir um fundo preto.

  • 1 (padrão): Recortar.

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:

  • true: Apenas áudio. Você só precisa definir os parâmetros relacionados ao áudio.

  • false (padrão): Não é apenas áudio. Todos os parâmetros, exceto VideoCodec e EnhancedParam, devem ser especificados.

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 (padrão).

  • H.265.

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.

  • profile: O perfil de codificação. Se o formato de codificação de vídeo for H.264, os valores válidos para profile incluem "baseline", "main" e "high". Se o formato de codificação de vídeo for H.265, o valor válido para profile é "main".

  • preset: Equilibra a velocidade e a qualidade da codificação. Os valores válidos para preset incluem "ultrafast", "superfast", "veryfast", "faster", "fast", "medium", "slow", "slower", "veryslow" e "placebo". Cada valor representa uma estratégia para equilibrar a velocidade de codificação e a qualidade do vídeo de saída, de "ultrafast" (velocidade de codificação mais rápida) a "placebo" (maior qualidade, velocidade de codificação mais lenta).

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 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

The information about the user corresponding to this pane. If you do not set this parameter, the system automatically fills it based on the order in which streamers join the channel.

Nota
  • If you specify user information, that user must already be configured in the `TranscodeParams.UserInfos` parameter.

  • This parameter is valid only for original streams and video streams.

SourceType

string

Não

The type of video input stream in stream mixing and transcoding mode. This parameter is valid only for video streams (StreamType=2). Valid values:

  • camera (default): Camera stream.

  • shareScreen: Screen sharing stream.

camera

ChannelId

string

Não

The ID of the channel where the user is located. You do not need to set this parameter for users in the same channel. For cross-channel stream mixing, set this parameter.

yourChannelId

UserId

string

Não

The user ID.

yourSubUserId

Height

string

Não

The height of the pane, as a normalized percentage.

0.2632

Width

string

Não

The width of the pane, as a normalized percentage.

0.3564

X

string

Não

The X-coordinate, as a normalized percentage.

0.2456

Y

string

Não

The Y-coordinate, as a normalized percentage.

0.3789

ZOrder

string

Não

The stacking order. 0 is the bottom layer. Layer 1 is on top of layer 0, and so on.

0

BackgroundImageUrl

string

Não

The URL of the background image for the video pane. The maximum length is 2048 characters. When a user turns off their camera or has not joined the channel, this image is displayed in their layout position.

yourImageUrl

RenderMode

string

Não

The display mode of the output video pane. Valid values:

  • 0: Scale and display a black background.

  • 1 (default): Clip.

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 (padrão): Stream da câmera.

  • shareScreen: Stream de compartilhamento de tela.

camera

StreamType

string

Não

O tipo de stream a ser assinado para mixagem de streams. Valores válidos:

  • 0 (padrão): Ingerir o stream original.

  • 1: Ingerir apenas o stream de áudio.

  • 2: Ingerir apenas o stream de vídeo.

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: Não garante que o SEI seja transportado.

  • 1: Garante que o SEI seja transportado.

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 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: Não garante que o SEI seja transportado.

  • 1: Garante que o SEI seja transportado.

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 pass-through.

yourPayloadContent

PayloadContentKey

string

Não

A chave correspondente ao conteúdo do payload do SEI 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âmetroDescrição
canvasInformaçõ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.
streamInformaçõ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.
tsO carimbo de data/hora do sistema operacional quando essas informações foram geradas, em milissegundos.
verA versão do formato SEI, como 1.0.0.20220915.
uddUm evento personalizado baseado em cenário enviado através do parâmetro PassThrough. O conteúdo é especificado pelo parâmetro PayloadContent.
Nota

Quando um usuário puxa um stream ingerido, os dados de mídia de streaming contêm informações SEI. Você pode usar esse recurso para passar informações personalizadas. As informações SEI podem ser recuperadas dos dados do 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 vários membros. Por exemplo, quando o streamer `streamer111` está transmitindo sozinho, o formato do 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 do 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 foi alterado. 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 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 `PayloadContent` no parâmetro `PassThrough`. Você também pode chamar o comando UpdateLiveMPUTask para atualizar a tarefa e especificar `PayloadContent` no parâmetro `PassThrough`.

  • O SEI personalizado pode ser enviado periodicamente. Você pode definir o período usando o parâmetro `Interval` em `PassThrough`. A unidade é milissegundos.

  • O SEI personalizado também pode ser enviado com quadros-chave. Você pode definir isso usando o parâmetro `FollowIdr` em `PassThrough`.

    • Você pode enviar SEI tanto periodicamente quanto com quadros-chave. Por exemplo, `Interval:1000` e `FollowIdr: 1` significa que o SEI personalizado é enviado a cada 1000 ms e também com cada quadro-chave.

    • Se você não definir `Interval` ou `FollowIdr`, 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 do 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 `userA` e `userB` respectivamente.

Nota

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. Parameter verification failed
400 InvalidAppId %s, please check and try again later. AppId is invalid, please check and try again.
400 MissingParam %s, please check and try again later. Parameter is missing, please check and try again.
500 InternalError InternalError
403 OperationDenied Your account has not enabled the Live service
403 Forbidden %s, please check and try again later. No permission, please check and try again.

Consulte Códigos de Erro para uma lista completa.

Notas de versão

Consulte Notas de Versão para uma lista completa.