Todos os produtos
Search
Central de documentação

ApsaraVideo VOD:Getting started

Última atualização: Aug 19, 2026

Comece a reproduzir vídeos com o ApsaraVideo Player SDK para Android.

Pré-requisitos

Você concluiu a integração do SDK do ApsaraVideo Player para Android.

Projeto de exemplo open-source

Para exemplos de código detalhados, consulte o módulo BasicPlayback em API-Example. Este projeto de exemplo Android baseado em Java ajuda você a integrar rapidamente os principais recursos do player.

Procedimento

Etapa 1: Crie o player

Crie uma instância do AliPlayer usando a classe AliPlayerFactory.

// Create a player instance.
AliPlayer mAliPlayer = AliPlayerFactory.createAliPlayer(context);
// Pass the traceId.
// Optional: Use the Tracing Analysis feature. If an exception occurs during video playback with the ApsaraVideo Player SDK, this feature performs end-to-end tracing of abnormal playback for a specific user or session. This helps you quickly diagnose issues and improve playback experience administration.
// Define the traceId value. It must be a unique identifier for your user or device, such as your business's user ID, or a device ID like an International Mobile Equipment Identity (IMEI) or identifier for advertisers (IDFA).
mAliPlayer.setTraceId("traceId");
Nota

Os recursos de monitoramento da qualidade de reprodução, Tracing Analysis e estatísticas de reprodução de vídeo do player dependem do relatório de logs de instrumentação. O monitoramento da qualidade de reprodução fornece dados sobre a qualidade geral da reprodução. O Tracing Analysis localiza usuários ou dispositivos específicos, analisa seu comportamento de reprodução e ajuda a identificar rapidamente problemas como erros de reprodução.

Ao criar o player, os recursos disponíveis dependem da configuração do parâmetro setTraceId:

  • Se você não definir o parâmetro setTraceId (padrão): O relatório de logs de instrumentação fica ativado. Assim, é possível usar os recursos de monitoramento da qualidade de reprodução e estatísticas de reprodução de vídeo. O recurso Tracing Analysis não estará disponível.

  • Se você definir o parâmetro setTraceId com um traceId: O valor do traceId é definido pelo usuário e deve ser um identificador exclusivo para seu usuário ou dispositivo, como o ID de usuário do seu negócio ou um ID de dispositivo, como International Mobile Equipment Identity (IMEI) ou identifier for advertisers (IDFA). Após definir o traceId, o relatório de logs de instrumentação é ativado. Dessa forma, você pode utilizar os recursos de monitoramento da qualidade de reprodução, Tracing Analysis e estatísticas de reprodução de vídeo.

  • Se você definir o parâmetro setTraceId como DisableAnalytics: O relatório de logs de instrumentação é desativado. Os recursos de monitoramento da qualidade de reprodução, Tracing Analysis e estatísticas de reprodução de vídeo ficam indisponíveis.

Etapa 2: Defina a view de exibição

O player oferece suporte a três tipos de views: AliDisplayView, SurfaceView e TextureView.

  • AliDisplayView: Componente de view unificado encapsulado pelo SDK com interfaces padronizadas. Ideal para integrações rápidas e cenários de UI simples.

  • SurfaceView / TextureView: Views nativas que concedem à camada da aplicação controle total sobre o ciclo de vida da view e a lógica de renderização. Recomendado para hierarquias de views complexas ou cenários que exigem controle refinado.

  1. Declare a view no arquivo XML.

    AliDisplayView

    <!-- Player rendering view -->
    <com.aliyun.player.videoview.AliDisplayView
        android:id="@+id/ali_display_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />

    SurfaceView

    <!-- Player rendering view -->
    <SurfaceView
        android:id="@+id/surface_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />

    TextureView

    <!-- Player rendering view -->
    <TextureView
        android:id="@+id/texture_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />
  2. Defina a view de exibição.

    AliDisplayView

    Chame o método setDisplayView do player para anexar a view.

    AliDisplayView mAliDisplayView = findViewById(R.id.display_view);
    // Set the player view type using setPreferDisplayView().
    mAliDisplayView.setPreferDisplayView(AliDisplayView.DisplayViewType.SurfaceView);
    mAliPlayer.setDisplayView(mAliDisplayView);

    SurfaceView

    Chame o método setSurface do player para anexar a view.

    SurfaceView mSurfaceView = findViewById(R.id.surface_view);
    mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(@NonNull SurfaceHolder holder) {
            mAliPlayer.setSurface(holder.getSurface());
        }
    
        @Override
        public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
            mAliPlayer.surfaceChanged();
        }
    
        @Override
        public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
            mAliPlayer.setSurface(null)
        }
    });

    TextureView

    Chame o método setSurface do player para vincular a view.

    TextureView mTextureView = findViewById(R.id.texture_view);
    mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
        @Override
        public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {
            mAliPlayer.setSurface(new Surface(surface));
        }
    
        @Override
        public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int width, int height) {
            mAliPlayer.surfaceChanged();
        }
    
        @Override
        public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) {
            mAliPlayer.setSurface(null);
            return true;
        }
    
        @Override
        public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) {
    
        }
    });

Etapa 3: Definir a source de reprodução

VidAuth playback (Recommended)

VidAuth vidAuth = new VidAuth();
vidAuth.setVid("Your Vid");// Required. The video ID (VideoId).
vidAuth.setPlayAuth("<yourPlayAuth>");// Required. The playback credential. Call the GetVideoPlayAuth operation of ApsaraVideo VOD to generate the credential.
vidAuth.setRegion("The region ID");// For ApsaraVideo Player SDK V5.5.5.0 and later, this parameter is deprecated. You do not need to set the region because the player automatically parses it. For versions earlier than V5.5.5.0, this parameter is required. It specifies the region where ApsaraVideo VOD is activated. The default value is cn-shanghai.
// vidAuth.setAuthTimeout(3600); // The validity period of the playback URL, in seconds. This value overwrites the validity period for URL signing that is set in the ApsaraVideo VOD console. If you do not pass this parameter, the default value 3600 is used. If you set this parameter, make sure that the period is longer than the video duration to prevent the playback URL from expiring before playback is complete.
mAliPlayer.setDataSource(vidAuth);

VidSts playback

VidSts vidSts = new VidSts();
vidSts.setVid("Your Vid");// Required. The video ID (VideoId).
vidSts.setAccessKeyId("<yourAccessKeyId>");// Required. The AccessKey ID of the temporary AccessKey pair. Call the AssumeRole operation of Security Token Service (STS) to generate it.
vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Required. The AccessKey secret of the temporary AccessKey pair. Call the AssumeRole operation of STS to generate it.
vidSts.setSecurityToken("<yourSecurityToken>");// Required. The STS token. Call the AssumeRole operation of STS to generate it.
vidSts.setRegion("The region ID");// Required. The region where ApsaraVideo VOD is activated. The default value is cn-shanghai.
mAliPlayer.setDataSource(vidSts);

UrlSource playback

// Create a playback source object and set the playback URL.
UrlSource urlSource = new UrlSource();
// Required. The playback URL. It can be a third-party video-on-demand (VOD) URL, a playback URL from ApsaraVideo VOD, or a local video URL.
urlSource.setUri("The playback URL");
mAliPlayer.setDataSource(urlSource);
Nota

Para mais opções de source de reprodução, consulte Recursos básicos.

Etapa 4: Iniciar a reprodução

// Prepare for playback.
mAliPlayer.prepare();
// Start playback.
mAliPlayer.start();

Etapa 5: Encerrar a reprodução

Antes de parar a reprodução, desvincule a view do player para liberar recursos de renderização. Escolha o método de desvinculação conforme o tipo de view do player em uso:

  • SurfaceView / TextureView: Chame setSurface(null) para desvincular a view.

  • AliDisplayView: Chame setDisplayView(null) para desvincular a view.

O código completo para encerrar a reprodução é o seguinte:

// Unbind the player view.
// For SurfaceView / TextureView:
aliPlayer.setSurface(null);
// For AliDisplayView:
aliPlayer.setDisplayView(null);

// Stop playback.
mAliPlayer.stop();
// Destroy the player.
mAliPlayer.release();
// Clear the reference to avoid a memory leak.
mAliPlayer = null;

Referências

Para controle de reprodução, listeners de eventos e outros recursos do player, consulte Recursos básicos.