Tous les produits
Search
Centre de documentation

ApsaraVideo VOD:Fonctionnalités de base

Dernière mise à jour :Aug 10, 2026

Utilisez les fonctionnalités de base du SDK ApsaraVideo Player pour Flutter, notamment le contrôle de la lecture, les paramètres d'affichage, le réglage du volume et de la vitesse, ainsi que le changement de définition. Pour plus d'informations, consultez les fonctionnalités avancées et la référence de l'API.

Définir la source de données (DataSource)

  • Le SDK ApsaraVideo Player pour Flutter prend en charge quatre méthodes de lecture VOD : VidAuth (recommandé), VidSts, UrlSource et la lecture chiffrée.

  • Le SDK ApsaraVideo Player pour Flutter ne prend en charge qu'une seule méthode de lecture en direct : UrlSource.

Lecture VOD

Lecture VOD à l'aide de VidAuth (recommandé)

Pour lire une vidéo VOD avec VidAuth, définissez vid sur l'ID audio ou vidéo et playauth sur l'identifiant de lecture.

  1. Une fois un fichier audio ou vidéo téléchargé, vous pouvez obtenir son ID dans la console ApsaraVideo VOD en sélectionnant Media Library > Audio/Video, ou en appelant l'opération SearchMedia.

  2. Obtenez l'identifiant de lecture en appelant l'opération GetVideoPlayAuth. Nous vous recommandons d'utiliser un SDK pour obtenir l'identifiant de lecture afin d'éviter la signature manuelle des requêtes. Pour un exemple d'appel de cette opération, consultez le Developer Portal.

Nous recommandons aux utilisateurs d'ApsaraVideo VOD d'utiliser cette méthode de lecture. VidAuth est plus sécurisé et plus simple à utiliser que VidSts. Pour une comparaison détaillée, consultez Comparaison entre la méthode basée sur l'identifiant et la méthode basée sur STS.

void onViewPlayerCreated(viewId) async {
  // Set the rendered view for the player.
  fAliplayer.setPlayerView(viewId);
  // Note: Before you call generatePlayerConfig, you must call createVidPlayerConfigGenerator() and setPreviewTime().
  FlutterAliplayer.createVidPlayerConfigGenerator();
  FlutterAliplayer.setPreviewTime(0);
  // Set the playback source.
  FlutterAliplayer.generatePlayerConfig().then((value) {
      fAliplayer.setVidAuth(
          vid: "Your Vid",// Required. The video ID (VideoId).
          region: "Your Region",// Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
          playAuth: "<yourPlayAuth>",// Required. The playback credential. You must call the GetVideoPlayAuth operation of ApsaraVideo VOD to generate the credential.
          playConfig: value);
        });    
  }
}

Lecture VOD à l'aide de VidSts

Pour lire une vidéo VOD avec VidSts, utilisez un identifiant temporaire Security Token Service (STS) au lieu d'un identifiant de lecture VOD. Obtenez au préalable le jeton STS et la paire AccessKey temporaire (AccessKeyId et AccessKeySecret). Pour plus d'informations, consultez Obtenir un jeton STS.

void onViewPlayerCreated(viewId) async {
  // Set the rendered view for the player.
  fAliplayer.setPlayerView(viewId);
  // Note: Before you call generatePlayerConfig, you must call createVidPlayerConfigGenerator() and setPreviewTime().
  FlutterAliplayer.createVidPlayerConfigGenerator();
  FlutterAliplayer.setPreviewTime(0);
  // Playback using VidSts.
  FlutterAliplayer.generatePlayerConfig().then((value) {
     fAliplayer.setVidSts(
          vid: "Your Vid",// Required. The video ID (VideoId).
          region: "Your Region",// Required. The region where ApsaraVideo VOD is activated. Default value: cn-shanghai.
          accessKeyId: "<yourAccessKeyId>",// Required. The AccessKey ID of the temporary AccessKey pair. You must call the AssumeRole operation of STS to generate the AccessKey ID.
          accessKeySecret: "<yourAccessKeySecret>",// Required. The AccessKey secret of the temporary AccessKey pair. You must call the AssumeRole operation of STS to generate the AccessKey secret.
          securityToken: "<yourSecurityToken>",// Required. The STS token. You must call the AssumeRole operation of STS to generate the token.
      	  playConfig: value);
    	});
       
}

Lecture VOD à l'aide de UrlSource

Pour lire une vidéo VOD avec UrlSource, définissez setUrl sur l'URL de lecture. L'URL peut être une URL tierce ou une URL de lecture provenant d'ApsaraVideo VOD.

Obtenez une URL de lecture Alibaba Cloud en appelant l'opération GetPlayInfo. Nous vous recommandons d'utiliser un SDK pour obtenir l'URL de lecture afin d'éviter la signature manuelle des requêtes. Pour un exemple, consultez le Developer Portal.

void onViewPlayerCreated(viewId) async {
  // Set the rendered view for the player.
  fAliplayer.setPlayerView(viewId);
  // Set the playback source.
  switch (_playMode) {
      // Playback using UrlSource.
    case ModeType.URL:
      this.fAliplayer.setUrl("Playback URL"); // Required. The playback URL. The URL can be a third-party VOD URL or a playback URL from ApsaraVideo VOD.
      break;
    default:
  }
}

Lecture VOD chiffrée

ApsaraVideo VOD prend en charge le chiffrement HLS, la cryptographie propriétaire Alibaba Cloud et le chiffrement DRM. Pour plus d'informations sur la lecture chiffrée, consultez Lire des vidéos chiffrées sur Flutter.

Lecture en direct

Pour plus d'informations, consultez ApsaraVideo Player pour Flutter.

Remarque
  • UrlSource utilise une URL pour la lecture. VidSts et VidAuth utilisent un ID vidéo (VID) pour la lecture.

  • Pour savoir comment définir la région, consultez Régions VOD.

Contrôler la lecture

Le SDK ApsaraVideo Player pour Flutter prend en charge les opérations courantes telles que le démarrage, la pause et le positionnement à un instant précis.

Lecture automatique

Activez la lecture automatique à l'aide de la méthode setAutoPlay. La lecture automatique est désactivée par défaut. Exemple :

fAliplayer.setAutoPlay(true);

Préparer la lecture

Appelez la méthode prepare pour commencer à lire et analyser les données de lecture. Si la lecture automatique est activée, la vidéo se lance automatiquement une fois les données analysées. Exemple :

fAliplayer.prepare();

Démarrer la lecture

Démarrez la lecture à l'aide de la méthode play. Exemple :

 fAliplayer.play();

Démarrer la lecture à partir d'un instant précis

Passez à un instant précis à l'aide de la méthode seekTo. Cette fonctionnalité est utile pour faire glisser la barre de progression ou reprendre la lecture à partir d'une position enregistrée. Exemple :

// position is the specified time in milliseconds. Valid values for seekMode: FlutterAvpdef.ACCURATE (accurate seek) and FlutterAvpdef.INACCURATE (inaccurate seek).
fAliplayer.seekTo(position,seekMode);

Pour démarrer la lecture à partir d'une position spécifique, appelez cette méthode avant d'appeler prepare. Exemple :

// Set the start time in milliseconds for the next player preparation. This setting is valid only for the immediately following prepare call.
// After prepare is called, this value is automatically reset to zero. If this method is not called again before the next prepare, playback starts normally.
// You can set seekMode to accurate or inaccurate mode.
fAliplayer.setStartTime(time, seekMode);

Mettre la lecture en pause

Mettez la lecture en pause à l'aide de la méthode pause. Exemple :

fAliplayer.pause();

Reprendre la lecture

Reprenez la lecture à l'aide de la méthode play. Exemple :

fAliplayer.play();

Arrêter la lecture

Arrêtez la lecture à l'aide de la méthode stop. Exemple :

fAliplayer.stop();

Détruire le lecteur

Détruisez l'instance du lecteur de manière synchrone ou asynchrone. Exemple :

// Synchronous destruction. The stop method is automatically called internally.
fAliplayer.destroy();
// Asynchronous destruction. The stop method is automatically called internally.
fAliplayer.releaseAsync();
Remarque

La destruction synchrone ne rend la main qu'après la libération de toutes les ressources du lecteur. Pour une meilleure réactivité de l'interface utilisateur, privilégiez la destruction asynchrone. Tenez compte des points suivants :

  1. N'effectuez aucune autre opération sur l'objet lecteur pendant la destruction asynchrone.

  2. Il n'est pas nécessaire d'arrêter manuellement le lecteur avant d'appeler la méthode de destruction asynchrone, car celle-ci inclut une procédure d'arrêt asynchrone.

Écouter l'état du lecteur

Le SDK ApsaraVideo Player pour Flutter vous permet de définir des écouteurs pour surveiller l'état du lecteur.

Définir des écouteurs pour le lecteur

Vous pouvez configurer plusieurs écouteurs pour le lecteur.

  1. Pour la lecture manuelle, vous devez définir l'écouteur OnPrepared. En effet, vous devez appeler la méthode play dans le rappel OnPrepared pour démarrer la lecture.

  2. Les écouteurs OnTrackReady et OnError sont importants. Nous vous recommandons de les définir.

L'exemple suivant présente certains des écouteurs disponibles :

// Preparation is successful.
fAliplayer.setOnPrepard((playerId) {});
// The first frame is displayed.
fAliplayer.setOnRenderingStart((playerId) {});
// The video width and height change.
fAliplayer.setOnVideoSizeChanged((width, height,playerId) {});
// The player status changes.
fAliplayer.setOnStateChanged((newState,playerId) {});
// Loading status.
fAliplayer.setOnLoadingStatusListener(
    loadingBegin: (playerId) {},
    loadingProgress: (percent, netSpeed,playerId) {},
    loadingEnd: (playerId) {});
// Seeking is complete.
fAliplayer.setOnSeekComplete((playerId) {});
// Callback for player event information, including buffer and current playback progress. The information is determined by infoCode, which corresponds to FlutterAvpdef.infoCode.
fAliplayer.setOnInfo((infoCode, extraValue, extraMsg,playerId) {});
// Playback is complete.
fAliplayer.setOnCompletion((playerId) {});
// The stream is ready.
fAliplayer.setOnTrackReady((playerId) {});
// Snapshot result.
fAliplayer.setOnSnapShot((path,playerId) {});
// Error result.
fAliplayer.setOnError((errorCode, errorExtra, errorMsg,playerId) {});
// The stream is switched.
fAliplayer.setOnTrackChanged((value,playerId) {});

Écouter l'état de la lecture

Surveillez les changements d'état du lecteur. Le rappel onStateChanged fournit l'état actuel. Exemple :

fAliplayer.setOnStateChanged((newState, playerId) {
  // newState is the playback status.
  switch (newState) {
    case FlutterAvpdef.AVPStatus_AVPStatusIdle: // Idle
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusInitialzed: // Initialization is complete.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusPrepared: // Preparation is complete.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusStarted: // Playing.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusPaused: // Paused.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusStopped: // Stopped.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusCompletion: // Playback is complete.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusError: // An error occurred.
      break;
    default:
  }
});

Définir le mode d'affichage

Le SDK ApsaraVideo Player pour Flutter prend en charge les paramètres d'affichage tels que le remplissage, la rotation et la mise en miroir.

Remplissage

Le SDK prend en charge trois modes de remplissage : ajustement aux proportions, remplissage aux proportions et étirement. Définissez le mode de remplissage à l'aide de la méthode setScalingMode. Exemple :

// Set the mode to aspect fit. The video is scaled down proportionally to fit within the view without distortion.
fAliplayer.setScalingMode(ScaleMode.SCALE_ASPECT_FIT);
// Set the mode to aspect fill. The video is scaled up proportionally to fill the view without distortion.
fAliplayer.setScalingMode(ScaleMode.SCALE_ASPECT_FILL);
// Set the mode to scale to fill. The video may be distorted if its aspect ratio does not match the view's aspect ratio.
fAliplayer.setScalingMode(ScaleMode.SCALE_TO_FILL);

Rotation

Faites pivoter la vidéo selon l'angle spécifié à l'aide de la méthode setRotateMode. Vous pouvez également récupérer l'angle de rotation après l'avoir défini. Exemple :

// Rotate the video 0 degrees clockwise.
fAliplayer.setRotateMode(RotateMode.ROTATE_0);
// Rotate the video 90 degrees clockwise.
fAliplayer.setRotateMode(RotateMode.ROTATE_90);
// Rotate the video 180 degrees clockwise.
fAliplayer.setRotateMode(RotateMode.ROTATE_180);
// Rotate the video 270 degrees clockwise.
fAliplayer.setRotateMode(RotateMode.ROTATE_270);
// Get the rotation angle.
fAliplayer.getRotateMode();

Mise en miroir

Le SDK prend en charge la mise en miroir horizontale, verticale et l'absence de mise en miroir. Configurez la mise en miroir à l'aide de la méthode setMirrorMode. Exemple :

// Set no mirroring.
fAliplayer.setMirrorMode(MirrorMode.MIRROR_MODE_NONE);
// Set horizontal mirroring.
fAliplayer.setMirrorMode(MirrorMode.MIRROR_MODE_HORIZONTAL);
// Set vertical mirroring.
fAliplayer.setMirrorMode(MirrorMode.MIRROR_MODE_VERTICAL);

Obtenir des informations de lecture

Récupérez la progression actuelle de la lecture et la durée de la vidéo à l'aide du SDK ApsaraVideo Player pour Flutter.

Obtenir la progression actuelle de la lecture

Obtenez le temps de lecture actuel en millisecondes à partir du rappel onInfo. Exemple :

fAliplayer.setOnInfo((infoCode,extraValue,extraMsg,playerId){
 if(infoCode==FlutterAvpdef.CURRENTPOSITION){
 // extraValue is the current playback progress.
}
});

Obtenir la durée de la vidéo

Obtenez la durée totale de la vidéo après son chargement, par exemple après l'événement AVPEventPrepareDone. Exemple :

fAliplayer.getMediaInfo().then((value){
 _videoDuration=value['duration'];
});

Définir le volume

Les paramètres de volume incluent le réglage du volume et la mise en sourdine.

Réglage du volume

Ajustez le volume à l'aide de la méthode setVolume. La plage prise en charge va de 0 à 2. Les valeurs supérieures à 1 ne sont pas recommandées, car elles peuvent provoquer des distorsions sonores. Exemple :

// The value of volume is a real number from 0 to 2.
fAliPlayer.setVolume(1);
// Get the volume information.
fAliPlayer.getVolume();

Paramètres de mise en sourdine

Mettez le lecteur en sourdine à l'aide de la méthode setMute. Exemple :

fAliplayer.setMute(true);

Modifier la vitesse de lecture

Le SDK ApsaraVideo Player pour Flutter vous permet de modifier la vitesse de lecture. Lisez à une vitesse comprise entre 0,5x et 5x la vitesse normale à l'aide de la méthode setSpeed. La hauteur sonore reste inchangée. Exemple :

// Set the playback speed. Speeds from 0.5x to 5x are supported. The speed is usually set in multiples of 0.5, such as 0.5x, 1x, and 1.5x.
fAliplayer.setSpeed(1.0);

Paramètres multi-définitions

Si vous utilisez une méthode basée sur VID (VidAuth ou VidSts) pour la lecture, aucun paramètre supplémentaire n'est requis. Le SDK récupère automatiquement la liste des définitions depuis ApsaraVideo VOD. Vous pouvez récupérer et changer de définition. Ce paramètre n'est pas pris en charge pour la lecture via UrlSource.

Récupérer la définition

Après le chargement de la vidéo, récupérez la définition de celle-ci.

fAliplayer.setOnPrepared((playerId) {
  fAliplayer.getMediaInfo().then((value){
        AVPMediaInfoinfo info=AVPMediaInfo.fromJson(value);
        info.tracks.forEach((element){
          if(element.trackType==3){
            // Definition
            String definition=element.trackDefinition;
            // Stream index
            int index=element.trackIndex;
          }
        });
      });    
});

Changer de définition

Changez de définition à l'aide de la méthode selectTrack. Transmettez l'index du TrackInfo correspondant.

fAliplayer.selectTrack(trackIdx);

Notification de changement de définition

Ce rappel est déclenché après un changement de définition réussi.

fAliplayer.setOnTrackChanged((value,playerId){
 // A callback indicates that the switch is successful. A method for a failed switch is not yet available.
});

Lecture en boucle

Le SDK ApsaraVideo Player pour Flutter propose la lecture en boucle. Activez la lecture en boucle en appelant setLoop. Une fois la vidéo terminée, elle redémarre automatiquement depuis le début. Exemple :

fAliplayer.setLoop(true);

Le rappel de début de boucle envoie des notifications via onInfo. Exemple :

fAliplayer.setOnInfo((infoCode, extraValue, extraMsg, playerId) {
 if(infoCode == FlutterAvpdef.LOOPINGSTART){
 // Loop playback start notification
 }
});

Obtenir les journaux de lecture

Le SDK ApsaraVideo Player pour Flutter vous permet d'obtenir les journaux de lecture. Activez l'impression des journaux en appelant enableConsoleLog. Exemple :

// Enable log printing.
FlutterAliplayer.enableConsoleLog(true);
// Set the log level. The default level is AF_LOG_LEVEL_INFO. To troubleshoot issues, you can set it to AF_LOG_LEVEL_TRACE.
FlutterAliplayer.setLogLevel(FlutterAvpdef.AF_LOG_LEVEL_INFO);

Le SDK ApsaraVideo Player pour Flutter vous permet d'obtenir des journaux au niveau des images. Configurez l'impression des journaux au niveau des images en appelant setLogOption. Exemple :

/// Set the log level. To troubleshoot issues, set the log level to AF_LOG_LEVEL_TRACE.
FlutterAliplayer.setLogLevel(LogLevel.AF_LOG_LEVEL_INFO);
/// Enable or disable logs.
FlutterAliplayer.enableConsoleLog(true);
/// Log callback information.
FlutterAliplayer.setLogInfoCallBack((level, msg) {
   print("[LOG][LEVEL][$level] $msg");
});
/// Enable the frame log callback. This is typically enabled for troubleshooting.
/// Option value: 0 means disabled, 1 means enabled.
FlutterAliplayer.setLogOption(value);
Remarque

La fonctionnalité de journalisation au niveau des images est principalement utilisée pour le dépannage.