Todos os produtos
Search
Central de documentação

:Flutter player with UI integration

Última atualização: Jun 27, 2026

Integre o AliPlayerWidget ao seu aplicativo Flutter para obter reprodução de vídeo de alto desempenho com uma interface pronta para uso.

Visão geral

O AliPlayerWidget é um componente de reprodução de vídeo de alto desempenho para aplicativos Flutter, desenvolvido com base no SDK do ApsaraVideo Player flutter_aliplayer. Ele oferece suporte a vídeo sob demanda (VOD), transmissão ao vivo, reprodução em lista e cenários de minisséries. Além disso, proporciona personalização flexível da interface para casos de uso como educação, entretenimento, comércio eletrônico e aplicativos de minisséries.

Requisitos

Categoria

Descrição

Versão do Flutter

2.10.0 ou posterior. Recomendamos a versão 3.22.2.

Versão do JDK

Use o JDK 11.

Nota

Para definir a versão do JDK como 11, acesse Preferences > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK e selecione 11. Se a versão 11 não estiver disponível, atualize o Android Studio.

Versão do Android

Android 6.0 ou posterior. Gradle 7.0 ou posterior.

Versão do iOS

iOS 10.0 ou posterior.

Chip do dispositivo móvel

Arquitetura: armeabi-v7a ou arm64-v8a.

Ferramenta de desenvolvimento

Use o Android Studio ou o Visual Studio Code.

Permissões

Permissões de rede

  • Ative as permissões de rede no Android e no iOS para permitir que o player carregue recursos de vídeo online.

Configuração de licença

  • Obtenha um certificado e uma chave de licença para o player no Apsara Video SDK. Para mais informações, consulte Gerenciar licenças.

Nota

Nota: Se a licença não for configurada corretamente, o player não funcionará e poderá gerar uma exceção de autorização de licença.

Para mais detalhes sobre as configurações de inicialização, consulte o projeto de exemplo aliplayer_widget_example.

Demonstração

Um pacote de demonstração baseado no projeto de exemplo aliplayer_widget_example está disponível para você explorar os recursos do AliPlayerWidget sem configurar nenhum ambiente adicional.

Como obter

Escaneie o QR code abaixo com seu dispositivo móvel para baixar e instalar o pacote de demonstração:

demo-qr-code

Nota

Nota: O QR code direciona para a versão mais recente do pacote de demonstração. Certifique-se de que seu dispositivo permita a instalação de aplicativos de terceiros.

Integração e download do SDK

O aliplayer_widget é open source. Obtenha o código-fonte completo de uma das seguintes maneiras e modifique-o para personalizar o componente:

Método de download

Link para download

Fonte Pub

Nota

Recomendamos integrar o aliplayer_widget com uma ferramenta de gerenciamento de pacotes.

GitHub

Repositório no GitHub

Pacote de código-fonte

aliplayer_widget.zip

O pacote baixado inclui:

  • Componentes principais: Implementação completa do AliPlayerWidget e do AliPlayerWidgetController.

  • Projeto de exemplo: O aliplayer_widget_example fornece amostras de código para cenários como VOD, transmissão ao vivo e reprodução em lista, ajudando você a integrar e usar o componente rapidamente.

  • Documentação e comentários: O código-fonte contém comentários detalhados e guias de desenvolvimento para personalizações.

Integração

Adicionar a dependência manualmente

Adicione a seguinte dependência ao arquivo pubspec.yaml:

dependencies:
  aliplayer_widget: ^x.y.z
Nota

Nota: x.y.z representa o número da versão do aliplayer_widget. Consulte a versão estável mais recente na página oficial do Pub.dev e substitua x.y.z pelo número real da versão, como ^7.0.0.

Usar a ferramenta de linha de comando

Se preferir usar a linha de comando, execute o comando abaixo para adicionar a dependência:

flutter pub add aliplayer_widget

Esse comando atualiza automaticamente o arquivo pubspec.yaml.

Após adicionar a dependência, execute o seguinte comando no terminal para instalá-la:

flutter pub get

Depois de concluir essas etapas, o AliPlayerWidget estará integrado ao seu projeto. Agora você pode começar a usá-lo.

Início rápido

Reproduzir um vídeo

O exemplo a seguir demonstra como incorporar um player de vídeo em uma página com apenas algumas linhas de código.

Expandir para visualizar o código de exemplo

import 'package:flutter/material.dart';
import 'package:aliplayer_widget/aliplayer_widget_lib.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: VideoPlayerPage(),
    );
  }
}

class VideoPlayerPage extends StatefulWidget {
  @override
  _VideoPlayerPageState createState() => _VideoPlayerPageState();
}

class _VideoPlayerPageState extends State<VideoPlayerPage> {
  late AliPlayerWidgetController _controller;

  @override
  void initState() {
    super.initState();
    // Initialize the player component controller.
    _controller = AliPlayerWidgetController(context);
    // Configure the player component data.
    final data = AliPlayerWidgetData(
      videoUrl: "https://example.com/video.mp4", // Replace this with the actual video URL.
      coverUrl: "https://example.com/cover.jpg", // Replace this with the actual thumbnail URL.
      videoTitle: "Sample Video",
    );
    _controller.configure(data); // Set autoplay.
  }

  @override
  void dispose() {
    // Destroy the player instance and release resources.
    _controller.destroy();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: AliPlayerWidget(
          _controller,
        ),
      ),
    );
  }
}

Etapas

  1. Inicialize o AliPlayerWidgetController.

    Crie a instância _controller no método initState.

  2. Chame a API configure.

    • Use o AliPlayerWidgetData para configurar a URL do vídeo, a miniatura, o título e outras informações.

    • Chame _controller.configure(data) para passar os dados ao componente do player.

  3. Libere os recursos.

    Execute _controller.destroy() no método dispose para evitar vazamentos de memória.

Suporte a mais cenários

O exemplo anterior abrange a reprodução básica de VOD. Para cenários mais complexos, como transmissão ao vivo e reprodução em lista, consulte o projeto de exemplo aliplayer_widget_example, que contém códigos e instruções detalhadas.

Projeto de exemplo

Descrição do projeto

O aliplayer_widget_example é um projeto de exemplo baseado na biblioteca Flutter aliplayer_widget que auxilia nos primeiros passos da integração do AliPlayerWidget.

Este projeto de exemplo ensina como:

  • Incorporar o componente de player de vídeo.

  • Configurar recursos de reprodução em diferentes cenários, como VOD, transmissão ao vivo e reprodução em lista.

  • Usar opções personalizadas para criar uma experiência de usuário diferenciada.

Compilar e executar o projeto

Executar pela linha de comando

  1. Clone o repositório.

    Primeiramente, clone o repositório aliplayer_widget_example para sua máquina local:

    cd aliplayer_widget_example
  2. Instale as dependências.

    Execute o comando abaixo para instalar as dependências necessárias ao projeto:

    flutter pub get
  3. Compile o projeto.

    Compilar o projeto Android

    Para compilar o projeto Android, siga estas etapas:

    1. Certifique-se de ter instalado o SDK do Android e o Gradle.

    2. Execute o comando a seguir para gerar o arquivo APK:

      flutter build apk
    3. Após a conclusão da compilação, o arquivo APK estará localizado em build/app/outputs/flutter-apk/app-release.apk.

    Compilar o projeto iOS

    Para compilar o projeto iOS, siga estas etapas:

    1. Verifique se o Xcode e o CocoaPods estão instalados.

    2. Inicialize as dependências do CocoaPods:

      cd ios && pod install && cd ..
    3. Execute o comando abaixo para gerar o arquivo do pacote de aplicativo iOS (IPA):

      flutter build ipa
    4. Quando a compilação terminar, o arquivo IPA estará em build/ios/ipa/Runner.ipa.

  4. Execute o exemplo.

    • Execute o exemplo para Android.

      flutter run lib/main.dart
    • Execute o exemplo para iOS.

      cd ios && pod install && cd ..//Run pod install first.
      
      flutter run lib/main.dart

Executar a partir de uma IDE

  • Usar o Android Studio

    1. Abra o projeto.

      Inicie o Android Studio. Selecione Open an Existing Project e abra o diretório clonado aliplayer_widget_example.

    2. Instale as dependências.

      No Android Studio, clique em pubspec.yaml e, em seguida, clique em Pub Get no canto superior direito para instalar as dependências.

    3. Configure o dispositivo.

      Certifique-se de que um dispositivo físico Android esteja conectado.

    4. Execute o aplicativo.

      Clique em Run na barra de ferramentas e selecione o dispositivo de destino para iniciar o aplicativo.

  • Usar o VS Code

    1. Abra o projeto.

      Inicie o VS Code. Selecione File -> Open Folder e abra o diretório clonado aliplayer_widget_example.

    2. Instale as dependências.

      Abra o terminal (Ctrl + ~) e execute o comando a seguir para instalar as dependências:

      flutter pub get
    3. Configure o dispositivo.

      Certifique-se de que um dispositivo físico Android ou iOS esteja conectado. Use o seletor de dispositivos no canto inferior esquerdo do VS Code para escolher o dispositivo de destino.

    4. Execute o aplicativo.

      Pressione F5 ou clique em Run and Debug na Barra de Atividades à esquerda. Selecione a configuração Flutter e inicie a sessão de depuração.

  • Usar o Xcode (apenas iOS)

    1. Abra o projeto.

      Navegue até o diretório ios e clique duas vezes no arquivo Runner.xcworkspace para abrir o projeto no Xcode.

    2. Instale as dependências do CocoaPods.

      Se as dependências do CocoaPods não estiverem instaladas, execute o seguinte comando no terminal:

      cd ios && pod install && cd ..
    3. Configure a assinatura.

      No Xcode, selecione o projeto Runner, vá para a aba Signing & Capabilities e configure uma conta de desenvolvedor válida e um certificado de assinatura.

    4. Execute o aplicativo.

      Clique em ▶️ na barra de ferramentas do Xcode e selecione o dispositivo de destino para iniciar o aplicativo.

Descrição dos exemplos

O projeto aliplayer_widget_example abrange múltiplos cenários e demonstra os recursos principais do AliPlayerWidget. Seja para reprodução básica de VOD, transmissão ao vivo ou reprodução de listas de vídeos curtos, este projeto ajuda você a aprender rapidamente como integrar e personalizar o componente.

Página de reprodução VOD (LongVideoPage)

Descrição

Esta página demonstra como usar o AliPlayerWidget para implementar recursos básicos de reprodução VOD.

Resultado

Após o carregamento da página, o vídeo VOD especificado é reproduzido automaticamente, exibindo a miniatura e o título. A barra de controle permite pausar, avançar, ajustar o volume e realizar outras operações. Veja abaixo um exemplo de código:

@override
void initState() {
  super.initState();
  _controller = AliPlayerWidgetController(context);
  final data = AliPlayerWidgetData(
    videoUrl: "https://example.com/sample-video.mp4",
    coverUrl: "https://example.com/sample-cover.jpg",
    videoTitle: "Sample Video Title",
  );
  _controller.configure(data);
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: AliPlayerWidget(_controller),
  );
}

Página de transmissão ao vivo (LivePage)

Descrição

Esta página ilustra como configurar o AliPlayerWidget para suportar a reprodução de mídia de transmissão ao vivo em tempo real.

Resultado

Assim que a página carrega, a transmissão ao vivo é reproduzida em tempo real com baixa latência. É possível visualizar mensagens e enviar comentários na janela de chat. Segue um exemplo de código:

@override
void initState() {
  super.initState();
  _controller = AliPlayerWidgetController(context);
  final data = AliPlayerWidgetData(
    videoUrl: "https://example.com/live-stream.m3u8",
    sceneType: SceneType.live,
  );
  _controller.configure(data);
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Column(
      children: [
        Expanded(child: AliPlayerWidget(_controller)),
        _buildChatArea(),
        _buildMessageInput(),
      ],
    ),
  );
}

Para informações sobre como usar a reprodução em lista para vídeos curtos, consulte Integrar a solução de minisséries para Flutter.

Componentes principais

AliPlayerWidget

O AliPlayerWidget é o componente principal do player, usado para incorporar e reproduzir vídeos em um aplicativo Flutter.

Construtor

AliPlayerWidget(
  AliPlayerWidgetController controller, {
  Key? key,
  List<Widget> overlays = const [],
});

Nome

Descrição

controller

Controlador do player. Gerencia a lógica de reprodução.

overlays

Lista opcional de componentes de sobreposição. Serve para sobrepor uma interface personalizada ao componente do player.

Exemplo

Expandir para visualizar o código de exemplo

AliPlayerWidget(
  _controller,
  overlays: [
    Positioned(
      right: 16,
      bottom: 80,
      child: Column(
        children: [
          IconButton(icon: Icon(Icons.favorite), onPressed: () {}),
          IconButton(icon: Icon(Icons.share), onPressed: () {}),
        ],
      ),
    ),
  ],
);

AliPlayerWidgetController

O AliPlayerWidgetController atua como o controlador central do componente do player. Ele gerencia a lógica de inicialização, reprodução e destruição do componente.

Métodos

Nome

Descrição

configure(AliPlayerWidgetData data)

Configura a fonte de dados.

play()

Inicia a reprodução do vídeo.

pause()

Pausa a reprodução.

seek(Duration position)

Salta para uma posição específica da reprodução.

setUrl(String url)

Define a URL de reprodução do vídeo.

destroy()

Destrói a instância do player e libera recursos.

Exemplo

// Initialize the player component controller.
final controller = AliPlayerWidgetController(context);

// Set the player component data.
AliPlayerWidgetData data = AliPlayerWidgetData(
  videoUrl: "https://example.com/video.mp4",
);
controller.configure(data);

// Destroy the player.
controller.destroy();

AliPlayerWidgetData

O AliPlayerWidgetData é o modelo de dados exigido pelo componente do player. Ele contém a URL do vídeo, miniatura, título e outras informações.

Propriedades

Nome

Descrição

videoUrl

URL de reprodução do vídeo. Este parâmetro é obrigatório.

coverUrl

URL da miniatura. Este parâmetro é opcional.

videoTitle

Título do vídeo. Este parâmetro é opcional.

thumbnailUrl

URL da miniatura. Este parâmetro é opcional.

sceneType

Tipo de cenário de reprodução. O valor padrão é VOD (SceneType.vod).

Exemplo

AliPlayerWidgetData(
  videoUrl: "https://example.com/video.mp4",
  coverUrl: "https://example.com/cover.jpg",
  videoTitle: "Sample Video",
  sceneType: SceneType.vod,
);

Propriedade SceneType

Valor da enumeração

Descrição

vod

Cenário de VOD. Adequado para reprodução de vídeo convencional. Suporta todos os recursos de controle de reprodução.

live

Cenário de transmissão ao vivo. Indicado para reprodução de streams em tempo real. Não suporta operações relacionadas à linha do tempo, como arrastar a barra de progresso, avançar ou retroceder, ou ajustar a velocidade de reprodução.

listPlayer

Cenário de reprodução em lista. Ideal para players em uma lista de vídeos, como em feeds ou listas de vídeos curtos. Não suporta gestos verticais para ajuste de volume ou brilho.

restricted

Cenário de reprodução restrita. Projetado para situações que exigem controle limitado de reprodução, como educação, treinamento ou monitoramento de exames. Não permite operações na linha do tempo, incluindo arrastar o progresso, avançar/retroceder ou alterar a velocidade.

minimal

Cenário de reprodução mínima. Recomendado para vídeos decorativos, players incorporados ou sobreposições de interface personalizadas. Exibe apenas o conteúdo do vídeo e oculta todos os elementos da interface, incluindo miniatura, legendas e controles. Suporta requisitos de interface totalmente personalizados.

Veja um exemplo abaixo:

_controller = AliPlayerWidgetController(context);
// Set the player component data.
final data = AliPlayerWidgetData(
  sceneType: SceneType.vod
);
_controller.configure(data);

Recursos personalizados

Componentes de sobreposição

Use o parâmetro overlays para sobrepor facilmente componentes de interface personalizados, como botões de Curtir, Comentar e Compartilhar, sobre o player.

AliPlayerWidget(
  _controller,
  overlays: [
    Positioned(
      right: 16,
      bottom: 80,
      child: Column(
        children: [
          IconButton(icon: Icon(Icons.favorite), onPressed: () {}),
          IconButton(icon: Icon(Icons.comment), onPressed: () {}),
          IconButton(icon: Icon(Icons.share), onPressed: () {}),
        ],
      ),
    ),
  ],
);

Chamadas de API comuns

O AliPlayerWidget expõe chamadas de API por meio do AliPlayerWidgetController para controle de reprodução, consultas de status e atualizações de dados. Abaixo estão algumas chamadas de API comuns e seus cenários de uso:

Configuração e inicialização

Nome

Descrição

configure

Configura a fonte de dados do player e o inicializa.

prepare

Prepara o player. Trata-se de um processo de preparação manual.

Controle de reprodução

Nome

Descrição

play

Inicia a reprodução do vídeo.

pause

Pausa a reprodução.

stop

Interrompe a reprodução e redefine o player.

seek

Salta para uma posição de reprodução especificada.

togglePlayState

Alterna o estado de reprodução entre tocar e pausar.

replay

Repete o vídeo. Geralmente usado para reiniciar o vídeo após a conclusão da reprodução.

Configurações de propriedades de reprodução

Nome

Descrição

setSpeed

Define a velocidade de reprodução.

setVolume

Ajusta o volume.

setVolumeWithDelta

Ajusta o volume com base em um incremento.

setBrightness

Define o brilho da tela.

setBrightnessWithDelta

Ajusta o brilho da tela com base em um incremento.

setLoop

Define se a reprodução deve ser repetida em loop.

setMute

Define se o áudio deve ser silenciado.

setMirrorMode

Configura o modo espelhado, como espelhamento horizontal ou vertical.

setRotateMode

Define o ângulo de rotação, como 90 ou 180 graus.

setScaleMode

Configura o modo de preenchimento de renderização, como esticar ou cortar.

selectTrack

Troca a definição de reprodução.

Outras configurações

Nome

Descrição

requestThumbnailBitmap

Solicita uma miniatura em um ponto de tempo específico.

clearCaches

Limpa o cache do player, incluindo o cache de vídeo e de imagens.

getWidgetVersion

Obtém o número da versão atual do widget Flutter.

Recursos avançados

Sistema de slots

Visão geral O AliPlayerWidget oferece um sistema de slots flexível que permite a personalização detalhada da interface do player. Combine ou substitua livremente componentes de interface para criar uma experiência de reprodução com identidade visual própria, focada em cenários específicos ou minimalista.

Tipos de slots Os seguintes slots de áreas interativas principais são integrados:

Tipo

Função

Exibição padrão

playerSurface

Slot de visualização do player. Renderiza o conteúdo de vídeo. Não é recomendável personalizá-lo.

Sim

topBar

Slot da barra superior. Contém o botão voltar, título e botão de configurações.

Sim

bottomBar

Slot da barra inferior. Inclui controles de reprodução, barra de progresso e botão de tela cheia.

Sim

playControl

Slot de controle de reprodução. Área destinada aos controles por gestos.

Sim

coverImage

Slot de miniatura. Exibe a miniatura antes do carregamento do vídeo.

Sim (Condicional)

playState

Slot de estado de reprodução. Mostra informações como mensagens de erro.

Sim (Condicional)

centerDisplay

Slot de exibição central. Apresenta indicadores de volume, brilho e outros durante operações por gestos.

Sim (Condicional)

seekThumbnail

Slot de miniatura de busca. Pré-visualiza miniaturas ao arrastar a barra de progresso.

Sim (Condicional)

subtitle

Slot de legenda. Exibe as legendas do vídeo.

Sim (Condicional)

settingMenu

Slot do menu de configurações. Contém as opções de configuração do player.

Sim (exceto no cenário mínimo)

overlays

Slot de sobreposição. Usado para adicionar sobreposições personalizadas.

Não

Nota
  • Não modifique o slot playerSurface (visualização do player). Ele é responsável pelo recurso principal de renderização de vídeo. Alterações podem causar exceções na reprodução.

  • Condicional significa que o slot é ativado apenas em estados ou configurações específicas.

Usar a interface padrão

Se nenhum construtor de slot for configurado, a interface completa será carregada por padrão. Isso é adequado para cenários de reprodução padrão.

Widget _buildPlayWidget() {
  return AliPlayerWidget(_controller);
}

Personalizar slots específicos

Personalize componentes específicos conforme necessário, mantendo o restante como padrão:

AliPlayerWidget(
  controller,
  slotBuilders: {
    SlotType.topBar: (context) => MyAppTopBar(title: 'My Video'),
    SlotType.bottomBar: (context) => MyCustomControls(),
  },
)

Personalizar todos os slots

AliPlayerWidget(
  controller,
  slotBuilders: {
    SlotType.topBar: (context) => CustomTop(),
    SlotType.bottomBar: (context) => CustomBottom(),
    SlotType.playControl: (context) => GestureHandler(),
    SlotType.coverImage: (context) => BrandCover(),
    SlotType.playState: (context) => ErrorOverlay(),
    SlotType.centerDisplay: (context) => VolumeIndicator(),
    SlotType.seekThumbnail: (context) => PreviewThumb(),
    SlotType.subtitle: (context) => SubtitleView(),
    SlotType.settingMenu: (context) => MySettings(),
    SlotType.overlays: (context) => [AdBanner(), Watermark()],
  },
)

Ocultar slots específicos

Defina o valor do slot como null para ocultar a área correspondente.

AliPlayerWidget(
  controller,
  slotBuilders: {
    SlotType.topBar: null,        // Hide the top bar.
    SlotType.settingMenu: null,   // Hide the settings menu.
    SlotType.centerDisplay: null, // Disable gesture feedback prompts.
  },
)

Segue um exemplo completo:

// Hide the top and bottom bars for a cleaner interface.
AliPlayerWidget(controller, slotBuilders: {
  SlotType.topBar: null,
  SlotType.bottomBar: null,
});

// Add a custom business overlay.
AliPlayerWidget(controller, slotBuilders: {
  SlotType.overlays: (context) => MyLikeShareButtons(),
});

// Create a fully branded user interface.
AliPlayerWidget(controller, slotBuilders: {
  SlotType.topBar: (context) => MyAppTopBar(),
  SlotType.bottomBar: (context) => MyAppBottomBar(),
  SlotType.settingMenu: null, // Hide settings.
});

Notificações de eventos

O AliPlayerWidgetController fornece objetos ValueNotifier que enviam notificações em tempo real sobre alterações de status do player e operações do usuário. Abaixo estão alguns objetos notifier comuns e suas finalidades:

Visão geral dos notifiers comuns

Gerenciamento de status de reprodução

Nome

Descrição

playStateNotifier

Monitora alterações no estado de reprodução, como reproduzir, pausar e parar.

playErrorNotifier

Monitora erros ocorridos durante a reprodução e fornece códigos e descrições dos erros.

Gerenciamento de progresso de reprodução

Nome

Descrição

currentPositionNotifier

Atualiza o progresso atual da reprodução em tempo real. Unidade: milissegundos.

bufferedPositionNotifier

Rastreia o progresso do buffer para indicar o intervalo de conteúdo armazenado em cache.

totalDurationNotifier

Informa a duração total do vídeo, permitindo calcular a porcentagem de progresso da reprodução ou exibir a duração total.

Controle de volume e brilho

Notifier

Descrição

volumeNotifier

Monitora alterações de volume e suporta ajuste dinâmico. O valor geralmente varia de 0,0 a 1,0.

brightnessNotifier

Monitora alterações no brilho da tela, permitindo ajustar o brilho conforme a luz ambiente. O valor geralmente varia de 0,0 a 1,0.

Definição e miniatura

Notifier

Descrição

currentTrackInfoNotifier

Rastreia alterações na definição atual do vídeo (como definição padrão, alta e ultra-alta) e fornece detalhes após a troca de definição.

thumbnailNotifier

Monitora o carregamento de miniaturas para exibir a prévia correspondente ao arrastar a barra de progresso.

Download de vídeo e captura de tela

Notifier

Descrição

snapFileStateNotifier

Rastreia o status do caminho da captura de tela atual. Ao chamar snapshot no controller, este notifier dispara uma alteração de caminho.

downloadStateNotifier

Rastreia o status de download do vídeo. Este recurso está disponível apenas para dados do tipo vidAuth ou vidSts. Use-o para verificar se o vídeo foi baixado.

Uso

Use o ValueListenableBuilder para ouvir alterações de um notifier e atualizar a interface ou executar lógicas em tempo real:

// Listen for playback errors.
ValueListenableBuilder<Map<int?, String?>?>(
  valueListenable: _controller.playErrorNotifier,
  builder: (context, error, _) {
    if (error != null) {
      final errorCode = error.keys.firstOrNull;
      final errorMsg = error.values.firstOrNull;
      return Text("Playback error: [$errorCode] $errorMsg");
    }
    return SizedBox.shrink();
  },
);

Recursos

Adaptação a múltiplos cenários

Oferece suporte a diversos cenários, incluindo VOD, transmissão ao vivo, reprodução em lista e reprodução em tela cheia.

Conjunto rico de recursos

  • Recursos básicos: Controle de reprodução, painel de configurações, exibição de miniaturas e troca de definição para reprodução de vídeo padrão.

  • Controle por gestos: Ajuste de brilho, volume e progresso da reprodução por meio de gestos para uma experiência intuitiva.

Personalização flexível da interface

  • Suporte a sobreposições: Componentes de sobreposição personalizados para recursos como anúncios e comentários ao vivo.

  • Design modular: Componentes de interface integrados e reutilizáveis, como barra superior, barra inferior e painel de configurações, facilitando a personalização.

  • Adaptação a tela cheia: Troca automática entre os modos paisagem e retrato para exibição ideal em diferentes dispositivos.

Gerenciamento de eventos e status

  • Monitoramento de status em tempo real: Atualizações de dados em tempo real para status de reprodução, dimensões do vídeo e progresso do buffer.

  • Mecanismo de callback de eventos: Listeners de eventos abrangentes para início, pausa, conclusão e outros estados de reprodução.

  • Suporte a logs e depuração: Sistema de logs detalhado para solução de problemas e otimização de desempenho.

Vantagens principais

Com chamadas de API simples, integre reprodução de vídeo de alta qualidade e reduza significativamente os custos de desenvolvimento. O AliPlayerWidget gerencia tanto controles básicos de reprodução quanto cenários interativos complexos, como ajustes por gestos e sobreposições.

Facilidade de uso

Implemente recursos complexos de reprodução de vídeo e integre-os aos seus projetos Flutter com chamadas de API simples.

Flexibilidade e extensibilidade

  • Design modular com diversas opções de personalização para desenvolvimento flexível.

  • Adaptação automática a diferentes tamanhos de tela e resoluções para uma experiência consistente.

Alto desempenho e estabilidade

  • Desenvolvido com base no SDK do ApsaraVideo Player, proporcionando uma experiência de reprodução de vídeo com baixa latência e alta estabilidade.

  • Arquitetura otimizada com componentes leves, carregamento assíncrono e modelo orientado a eventos para operação fluida.

Suporte multiplataforma

Aproveita os recursos multiplataforma do Flutter para oferecer suporte a Android e iOS com uma única base de código.

Observações

Liberação de recursos

Ao destruir uma página, certifique-se de chamar o método AliPlayerWidgetController.destroy() para liberar os recursos do player.

Permissões de rede

Garanta que o aplicativo possua as permissões de rede necessárias para carregar vídeos online.

Suporte a miniaturas

Caso deseje usar o recurso de miniaturas, assegure-se de fornecer uma URL de miniatura válida.

Depuração e otimização

Ative o recurso de logs durante o desenvolvimento para facilitar a solução de problemas. Otimize o desempenho dos componentes de sobreposição para evitar impactos na fluidez da reprodução.

Perguntas frequentes

Para mais informações sobre problemas comuns e soluções ao usar o SDK do ApsaraVideo Player, consulte Perguntas frequentes sobre o ApsaraVideo Player.