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

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 |
|
|
Pacote de código-fonte |
O pacote baixado inclui:
Componentes principais: Implementação completa do
AliPlayerWidgete doAliPlayerWidgetController.Projeto de exemplo: O
aliplayer_widget_examplefornece 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: 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.
Etapas
-
Inicialize o AliPlayerWidgetController.
Crie a instância
_controllerno métodoinitState. -
Chame a API configure.
Use o
AliPlayerWidgetDatapara 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.
-
Libere os recursos.
Execute
_controller.destroy()no métododisposepara 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
-
Clone o repositório.
Primeiramente, clone o repositório
aliplayer_widget_examplepara sua máquina local:cd aliplayer_widget_example -
Instale as dependências.
Execute o comando abaixo para instalar as dependências necessárias ao projeto:
flutter pub get -
Compile o projeto.
Compilar o projeto Android
Para compilar o projeto Android, siga estas etapas:
Certifique-se de ter instalado o SDK do Android e o Gradle.
-
Execute o comando a seguir para gerar o arquivo APK:
flutter build apk 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:
Verifique se o Xcode e o CocoaPods estão instalados.
-
Inicialize as dependências do CocoaPods:
cd ios && pod install && cd .. -
Execute o comando abaixo para gerar o arquivo do pacote de aplicativo iOS (IPA):
flutter build ipa Quando a compilação terminar, o arquivo IPA estará em
build/ios/ipa/Runner.ipa.
-
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
-
Abra o projeto.
Inicie o Android Studio. Selecione
Open an Existing Projecte abra o diretório clonadoaliplayer_widget_example. -
Instale as dependências.
No Android Studio, clique em
pubspec.yamle, em seguida, clique emPub Getno canto superior direito para instalar as dependências. -
Configure o dispositivo.
Certifique-se de que um dispositivo físico Android esteja conectado.
-
Execute o aplicativo.
Clique em
Runna barra de ferramentas e selecione o dispositivo de destino para iniciar o aplicativo.
-
-
Usar o VS Code
-
Abra o projeto.
Inicie o VS Code. Selecione
File -> Open Foldere abra o diretório clonadoaliplayer_widget_example. -
Instale as dependências.
Abra o terminal (
Ctrl + ~) e execute o comando a seguir para instalar as dependências:flutter pub get -
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.
-
Execute o aplicativo.
Pressione
F5ou clique emRun and Debugna Barra de Atividades à esquerda. Selecione a configuraçãoFluttere inicie a sessão de depuração.
-
-
Usar o Xcode (apenas iOS)
-
Abra o projeto.
Navegue até o diretório
iose clique duas vezes no arquivoRunner.xcworkspacepara abrir o projeto no Xcode. -
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 .. -
Configure a assinatura.
No Xcode, selecione o projeto
Runner, vá para a abaSigning & Capabilitiese configure uma conta de desenvolvedor válida e um certificado de assinatura. -
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
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 ( |
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 |
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 |
|
downloadStateNotifier |
Rastreia o status de download do vídeo. Este recurso está disponível apenas para dados do tipo |
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.