Tüm Ürünler
Search
Belge Merkezi

ApsaraVideo VOD:Temel özellikler

Son Güncelleme:Oct 05, 2026

Oynatma denetimi, görüntüleme ayarları, ses ve hız ayarlama ile çözünürlük değiştirme dahil olmak üzere Flutter için ApsaraVideo Player SDK'nın temel özelliklerini kullanın. Daha fazla bilgi için Gelişmiş özellikler ve API referansı konularına bakın.

Veri kaynağını (DataSource) ayarlayın

  • Flutter için ApsaraVideo Player SDK dört VOD oynatma yöntemini destekler: VidAuth (önerilir), VidSts, UrlSource ve şifreli oynatma.

  • Flutter için ApsaraVideo Player SDK yalnızca bir canlı yayın oynatma yöntemini destekler: UrlSource.

VOD oynatma

VidAuth kullanarak VOD oynatma (Önerilen)

Bir VOD videosunu VidAuth ile oynatmak için vid parametresini ses veya video kimliğine, playauth parametresini ise oynatma kimlik bilgisine ayarlayın.

  1. Bir ses veya video dosyası yüklendikten sonra, ApsaraVideo VOD konsolunda Media Library > Audio/Video seçeneklerini seçerek veya SearchMedia işlemini çağırarak dosyanın kimliğini elde edebilirsiniz.

  2. GetVideoPlayAuth işlemini çağırarak oynatma kimlik bilgisini elde edebilirsiniz. Kendiniz imzalama işlemi yapmak zorunda kalmamak için oynatma kimlik bilgisini bir SDK aracılığıyla almanızı öneririz. Bu işlemin nasıl çağrılacağına ilişkin bir örnek için Developer Portal adresine bakın.

ApsaraVideo VOD kullanıcılarının bu oynatma yöntemini kullanmasını öneririz. VidAuth, VidSts'ye kıyasla daha güvenlidir ve kullanımı daha kolaydır. Ayrıntılı karşılaştırma için Kimlik bilgisi tabanlı yöntem ile STS tabanlı yöntem arasındaki karşılaştırma konusuna bakın.

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);
        });    
  }
}

VidSts kullanarak VOD oynatma

Bir VOD videosunu VidSts ile oynatmak için VOD oynatma kimlik bilgisi yerine geçici bir Security Token Service (STS) kimlik bilgisi kullanın. Önceden STS belirtecini ve geçici AccessKey çiftini (AccessKeyId ve AccessKeySecret) edinin. Daha fazla bilgi için STS belirteci edinme konusuna bakın.

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);
    	});
       
}

UrlSource kullanarak VOD oynatma

Bir VOD videosunu UrlSource ile oynatmak için setUrl parametresini oynatma URL'sine ayarlayın. URL, üçüncü taraf bir URL veya ApsaraVideo VOD'dan alınan bir oynatma URL'si olabilir.

GetPlayInfo işlemini çağırarak bir Alibaba Cloud oynatma URL'si elde edebilirsiniz. Kendiniz imzalama işlemi yapmak zorunda kalmamak için oynatma URL'sini bir SDK aracılığıyla almanızı öneririz. Örnek için Developer Portal adresine bakın.

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

Şifreli VOD oynatma

ApsaraVideo VOD, HLS şifrelemesini, Alibaba Cloud'a özgü kriptografiyi ve DRM şifrelemesini destekler. Şifreli oynatma hakkında daha fazla bilgi için Flutter'da şifreli videoları oynatma konusuna bakın.

Canlı yayın oynatma

Daha fazla bilgi için Flutter için ApsaraVideo Player konusuna bakın.

Not
  • UrlSource oynatma için bir URL kullanır. VidSts ve VidAuth ise oynatma için bir video kimliği (VID) kullanır.

  • Bölge ayarının nasıl yapılacağı hakkında daha fazla bilgi için VOD bölgeleri konusuna bakın.

Oynatmayı denetleyin

Flutter için ApsaraVideo Player SDK, başlatma, duraklatma ve belirli bir zamana atlama gibi yaygın işlemleri destekler.

Otomatik oynatma

Otomatik oynatmayı etkinleştirmek için setAutoPlay yöntemini kullanın. Otomatik oynatma varsayılan olarak devre dışıdır. Örnek:

fAliplayer.setAutoPlay(true);

Oynatmaya hazırlanın

Oynatma için verileri okumaya ve ayrıştırmaya başlamak üzere prepare yöntemini çağırın. Otomatik oynatma etkinleştirilmişse, veriler ayrıştırıldıktan sonra video otomatik olarak oynatılır. Örnek:

fAliplayer.prepare();

Oynatmayı başlatın

Oynatmayı başlatmak için play yöntemini kullanın. Örnek:

 fAliplayer.play();

Belirli bir zamandan itibaren oynatmayı başlatın

Belirli bir zamana atlamak için seekTo yöntemini kullanın. Bu yöntem, ilerleme çubuğunun sürüklenmesi veya kaydedilen bir konumdan oynatmanın devam ettirilmesi durumunda kullanışlıdır. Örnek:

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

Oynatmayı belirli bir konumdan başlatmak için bu yöntemi prepare yöntemini çağırmadan önce çağırın. Örnek:

// 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);

Oynatmayı duraklatın

Oynatmayı duraklatmak için pause yöntemini kullanın. Örnek:

fAliplayer.pause();

Oynatmayı devam ettirin

Oynatmayı devam ettirmek için play yöntemini kullanın. Örnek:

fAliplayer.play();

Oynatmayı durdurun

Oynatmayı durdurmak için stop yöntemini kullanın. Örnek:

fAliplayer.stop();

Oynatıcıyı yok edin

Oynatıcı örneğini eşzamanlı veya eşzamansız olarak yok edin. Örnek:

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

Eşzamanlı yok etme işlemi, tüm oynatıcı kaynakları serbest bırakılana kadar dönüş yapmaz. Daha iyi bir kullanıcı arabirimi yanıt verebilirliği için eşzamansız yok etme işlemini kullanın. Aşağıdaki noktalara dikkat edin:

  1. Eşzamansız yok etme işlemi sırasında oynatıcı nesnesinde başka hiçbir işlem gerçekleştirmeyin.

  2. Eşzamansız yok etme yöntemi, eşzamansız bir durdurma yordamı içerdiğinden, bu yöntemi çağırmadan önce oynatıcıyı manuel olarak durdurmanız gerekmez.

Oynatıcı durumunu dinleyin

Flutter için ApsaraVideo Player SDK, oynatıcı durumunu izlemek amacıyla oynatıcı dinleyicileri ayarlamanıza olanak tanır.

Oynatıcı dinleyicilerini ayarlayın

Oynatıcı için birden çok dinleyici ayarlayabilirsiniz.

  1. Manuel oynatma için OnPrepared dinleyicisini ayarlamanız gerekir. Çünkü oynatmayı başlatmak için OnPrepared geri aramasında play yöntemini çağırmanız gerekir.

  2. OnTrackReady ve OnError dinleyicileri önemlidir. Bunları ayarlamanızı öneririz.

Aşağıdaki örnek, mevcut dinleyicilerden bazılarını göstermektedir:

// 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) {});

Oynatma durumunu dinleyin

Oynatıcı durumundaki değişiklikleri dinleyin. onStateChanged geri araması geçerli durumu sağlar. Örnek:

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:
  }
});

Görüntüleme modunu ayarlayın

Flutter için ApsaraVideo Player SDK, doldurma, döndürme ve yansıtma gibi görüntüleme ayarlarını destekler.

Doldurma

SDK üç doldurma modunu destekler: en-boy oranına sığdır, en-boy oranına doldur ve doldurmak için ölçeklendir. Doldurma modunu ayarlamak için setScalingMode yöntemini kullanın. Örnek:

// 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);

Döndürme

Videoyu belirtilen açıyla döndürmek için setRotateMode yöntemini kullanın. Ayarı yaptıktan sonra döndürme açısını da alabilirsiniz. Örnek:

// 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();

Yansıtma

SDK yatay yansıtma, dikey yansıtma ve yansıtma yok seçeneklerini destekler. Yansıtmayı yapılandırmak için setMirrorMode yöntemini kullanın. Örnek:

// 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);

Oynatma bilgilerini alın

Flutter için ApsaraVideo Player SDK'yı kullanarak geçerli oynatma ilerlemesini ve video süresini alın.

Geçerli oynatma ilerlemesini alın

Geçerli oynatma süresini milisaniye cinsinden onInfo geri aramasından alın. Örnek:

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

Video süresini alın

Video yüklendikten sonra, örneğin AVPEventPrepareDone olayından sonra toplam video süresini alın. Örnek:

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

Sesi ayarlayın

Ses ayarları, ses düzeyi ayarlama ve sesi kapatma işlemlerini içerir.

Ses düzeyi ayarlama

Sesi ayarlamak için setVolume yöntemini kullanın. Desteklenen aralık 0 ile 2 arasındadır. Gürültüye neden olabileceğinden 1'den büyük değerler önerilmez. Örnek:

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

Sesi kapatma ayarları

Oynatıcının sesini kapatmak için setMute yöntemini kullanın. Örnek:

fAliplayer.setMute(true);

Oynatma hızını değiştirin

Flutter için ApsaraVideo Player SDK, oynatma hızını değiştirmenize olanak tanır. Normal hızın 0,5x ile 5x katı arasında oynatmak için setSpeed yöntemini kullanın. Ses perdesi değişmeden kalır. Örnek:

// 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);

Çoklu çözünürlük ayarları

Oynatma için VID tabanlı bir yöntem (VidAuth veya VidSts) kullanıyorsanız ek ayar gerektirmez. SDK, çözünürlük listesini otomatik olarak ApsaraVideo VOD'dan alır. Çözünürlükleri alabilir ve değiştirebilirsiniz. Bu ayar, UrlSource oynatma için desteklenmez.

Çözünürlüğü alın

Video yüklendikten sonra video çözünürlüğünü alın.

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;
          }
        });
      });    
});

Çözünürlüğü değiştirin

Çözünürlüğü değiştirmek için selectTrack yöntemini kullanın. İlgili TrackInfo dizinini iletin.

fAliplayer.selectTrack(trackIdx);

Çözünürlük değiştirme bildirimi

Bu geri arama, başarılı bir çözünürlük değiştirmeden sonra tetiklenir.

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

Döngüsel oynatma

Flutter için ApsaraVideo Player SDK döngüsel oynatma sağlar. Döngüsel oynatmayı etkinleştirmek için setLoop öğesini çağırın. Video bittikten sonra otomatik olarak baştan yeniden başlar. Örnek:

fAliplayer.setLoop(true);

Döngü başlatma geri araması, onInfo aracılığıyla bildirim gönderir. Örnek:

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

Oynatma günlüklerini alın

Flutter için ApsaraVideo Player SDK, oynatma günlüklerini almanıza olanak tanır. Günlük yazdırmayı etkinleştirmek için enableConsoleLog öğesini çağırın. Örnek:

// 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);

Flutter için ApsaraVideo Player SDK, kare düzeyinde günlükleri almanıza olanak tanır. Kare düzeyinde günlük yazdırmayı yapılandırmak için setLogOption öğesini çağırın. Örnek:

/// 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);
Not

Kare düzeyindeki günlük özelliği öncelikle sorun giderme amacıyla kullanılır.