Todos os produtos
Search
Central de documentação

ApsaraVideo Live:Push SDK for Android

Última atualização: Jun 30, 2026

Integre o ApsaraVideo Live Push SDK ao seu aplicativo Android para capturar entradas de câmera e microfone e enviar um stream ao vivo para um endpoint de ingestão.

Como funciona

O Push SDK gerencia todo o pipeline, da captura de mídia à entrega:

  1. O SDK captura vídeo da câmera e áudio do microfone.

  2. O aplicativo chama o SDK para inicializar um stream de envio com a URL de ingestão do ApsaraVideo Live.

  3. O SDK codifica e transmite o stream para o endpoint de ingestão em tempo real.

  4. Os espectadores conectam-se à URL de reprodução para assistir ao stream ao vivo.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Conta Alibaba Cloud com o ApsaraVideo Live ativado

  • Projeto Android direcionado ao Android 5.0 (API level 21) ou superior

  • Android Studio 3.0 ou superior

  • URL de ingestão válida obtida no console do ApsaraVideo Live

Integrar o SDK

Adicionar a dependência Maven

O Push SDK é distribuído via Maven. Adicione a dependência conforme a versão do seu Android Gradle Plugin (AGP).

Para AGP 7.1.0 ou superior, adicione o repositório Maven no arquivo settings.gradle:

dependencyResolutionManagement {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/central' }
    }
}

Para versões do AGP anteriores à 7.1.0, adicione o repositório Maven no arquivo build.gradle do nível do projeto:

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/central' }
    }
}
Nota

Se dependencyResolutionManagement não estiver presente no arquivo settings.gradle, sua versão do AGP é anterior à 7.1.0. Nesse caso, use a abordagem via build.gradle.

Em seguida, adicione a dependência do SDK no arquivo build.gradle do nível do aplicativo:

dependencies {
    implementation 'com.aliyun.video.android:pusher:x.x.x'
}

Substitua x.x.x pela versão mais recente do SDK. Para verificar a versão atual, consulte as notas de lançamento do ApsaraVideo Live.

Declarar permissões

Adicione as seguintes permissões ao arquivo AndroidManifest.xml:

<!-- Camera access for video capture -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- Microphone access for audio capture -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- Network access for stream delivery -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Network state detection for adaptive bitrate -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Wi-Fi state detection -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Read local media files -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Keep screen on during streaming -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Background streaming support -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

No Android 6.0 (API level 23) e superior, as permissões CAMERA e RECORD_AUDIO são classificadas como perigosas e exigem solicitação em tempo de execução. Solicite-as antes de iniciar o stream de envio.

Configure o ProGuard

Se o aplicativo usar redução de código, adicione as regras abaixo ao arquivo de configuração do ProGuard:

-keep class com.alivc.** { *; }
-keep class com.aliyun.** { *; }
-dontwarn com.alivc.**
-dontwarn com.aliyun.**

Iniciar um stream de envio

Inicializar o pusher

Crie uma instância de AlivcLivePusher e configure-a com AlivcLivePushConfig:

Java

AlivcLivePushConfig config = new AlivcLivePushConfig();
config.setResolution(AlivcResolutionEnum.RESOLUTION_540P);
config.setFps(AlivcFpsEnum.FPS_20);
config.setEnableBitrateControl(true);

AlivcLivePusher pusher = new AlivcLivePusher();
pusher.init(context, config);

Kotlin

val config = AlivcLivePushConfig().apply {
    resolution = AlivcResolutionEnum.RESOLUTION_540P
    fps = AlivcFpsEnum.FPS_20
    isEnableBitrateControl = true
}

val pusher = AlivcLivePusher()
pusher.init(context, config)

Adicionar uma superfície de pré-visualização

Vincule uma SurfaceView ao pusher para exibir a pré-visualização da câmera:

Java

SurfaceView previewView = findViewById(R.id.preview_surface);
pusher.startPreview(previewView);

Kotlin

val previewView = findViewById<SurfaceView>(R.id.preview_surface)
pusher.startPreview(previewView)

Iniciar e parar a transmissão

Chame startPush com a URL de ingestão para começar a transmitir. Substitua <your-ingest-domain> e <stream-name> pelos valores correspondentes no console do ApsaraVideo Live.

Java

String ingestUrl = "rtmp://<your-ingest-domain>/live/<stream-name>";
pusher.startPush(ingestUrl);

Kotlin

val ingestUrl = "rtmp://<your-ingest-domain>/live/<stream-name>"
pusher.startPush(ingestUrl)

Para interromper o stream e liberar recursos:

Java

pusher.stopPush();
pusher.destroy();

Kotlin

pusher.stopPush()
pusher.destroy()

Gerenciar o ciclo de vida do pusher

Chame os métodos a seguir nos callbacks de ciclo de vida da Activity para evitar vazamento de recursos:

Java

@Override
protected void onResume() {
    super.onResume();
    pusher.resumePush();
}

@Override
protected void onPause() {
    super.onPause();
    pusher.pausePush();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    pusher.stopPush();
    pusher.destroy();
}

Kotlin

override fun onResume() {
    super.onResume()
    pusher.resumePush()
}

override fun onPause() {
    super.onPause()
    pusher.pausePush()
}

override fun onDestroy() {
    super.onDestroy()
    pusher.stopPush()
    pusher.destroy()
}

Verifique o stream

Após chamar startPush, confirme se o stream está ativo:

  1. Acesse o console do ApsaraVideo Live.

  2. Navegue até Live Management > Streams.

  3. Verifique se o nome do stream aparece na lista de streams ativos.

Teste a reprodução usando a URL de reprodução em um player de mídia ou navegador.

Próximas etapas