All Products
Search
Document Center

ApsaraVideo Live:Implementasikan penarikan aliran RTS di Android

Last Updated:Feb 11, 2026

Topik ini menjelaskan cara mengimplementasikan RTS menggunakan ApsaraVideo Player SDK di Android.

Integrasikan SDK

Tambahkan dependensi ApsaraVideo Player SDK sebagai berikut:

  • Maven integration

    1. Tambahkan alamat repositori Maven.

      Tambahkan alamat repositori Maven ke file build.gradle pada direktori root.

      // Alamat repositori Maven untuk SDK terkait Alibaba Cloud (ApsaraVideo Player)
      maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases' }
    2. Tambahkan dependensi ApsaraVideo Player SDK ke file app/build.gradle dalam proyek Anda.

      def player_sdk_version = "x.x.x" // Kami merekomendasikan penggunaan versi terbaru.
      def rts_sdk_version = "7.12.0" // Nomor versi independen, saat ini merupakan versi terbaru.
      
      // Library utama pemutar
      implementation "com.aliyun.sdk.android:AliyunPlayer:$player_sdk_version-full"
      
      // Lapisan jembatan (AlivcArtc) antara pemutar dan komponen RTS. Nomor versi harus konsisten dengan versi pemutar, dan harus diintegrasikan bersamaan dengan komponen RTS.
      implementation "com.aliyun.sdk.android:AlivcArtc:$player_sdk_version"
      
      // Komponen RTS
      implementation "com.aliyun.rts.android:RtsSDK:$rts_sdk_version"
      Penting
      • Lapisan jembatan (AlivcArtc) antara pemutar dan komponen RTS harus konsisten dengan nomor versi pemutar dan harus diintegrasikan bersamaan dengan komponen RTS.

      • Untuk informasi versi pemutar, lihat Unduh SDK. Kami merekomendasikan penggunaan versi terbaru. Versi minimum yang didukung adalah V5.4.5.0.

      • Untuk FAQ, lihat FAQ Pemutar Android.

Gunakan antarmuka ApsaraVideo Player SDK

Panggil metode yang disediakan oleh ApsaraVideo Player SDK untuk menggunakan fitur RTS. Untuk informasi tentang fitur lain dari ApsaraVideo Player SDK, lihat Fitur lanjutan dan Referensi API.

Catatan
  • Berikut adalah contoh kode. Untuk kode lengkap, lihat modul RTS Real-Time Streaming playback dalam proyek API-Example. Proyek ini merupakan proyek sampel Android berbasis Java untuk ApsaraVideo Player SDK yang membantu developer menguasai integrasi fitur inti SDK dengan cepat.

  • Saat mengimplementasikan penarikan aliran RTS menggunakan ApsaraVideo Player SDK, Anda tidak dapat memanggil metode pause untuk menjeda siaran langsung. Sebagai gantinya, panggil stop untuk menghentikan pemutaran, lalu panggil prepare untuk memutar ulang.

  • Seeking (seret) tidak didukung.

Memuat library RTS

Tambahkan System.loadLibrary("RtsSDK"); ke Activity yang sesuai sesuai kebutuhan.

static {
    System.loadLibrary("RtsSDK");
}

Buat pemutar

  1. Buat pemutar.

    Anda dapat membuat AliPlayer menggunakan kelas AliPlayerFactory.

    // Buat instans pemutar
    AliPlayer mAliPlayer = AliPlayerFactory.createAliPlayer(context);
    // Masukkan traceId
    // Opsional: Kami merekomendasikan penggunaan fitur 'Pelacakan titik tunggal pemutar'. Saat terjadi pengecualian selama pemutaran video menggunakan ApsaraVideo Player SDK, gunakan fitur pelacakan titik tunggal untuk melakukan pelacakan end-to-end atas perilaku pemutaran abnormal untuk pengguna atau sesi pemutaran tertentu. Hal ini membantu Anda mendiagnosis penyebab masalah dengan cepat dan meningkatkan efisiensi administrasi pengalaman pemutaran secara efektif.
    // Tentukan sendiri nilai traceId. Nilai tersebut harus berupa pengenal unik untuk pengguna atau perangkat pengguna Anda, seperti ID pengguna bisnis Anda, IMEI, atau IDFA.
    mAliPlayer.setTraceId("traceId");
    Catatan

    Pemutar menyediakan fitur Pemantauan Kualitas Pemutaran (untuk melihat data kualitas pemutaran secara keseluruhan), fitur Troubleshooting Titik Tunggal (untuk menemukan pengguna atau perangkat tertentu, menganalisis perilaku pemutaran mereka, dan mengidentifikasi kelainan pemutaran dengan cepat), serta fitur Statistik Pemutaran Video—semuanya bergantung pada fitur pelaporan log instrumentasi.

    Saat Anda membuat pemutar, fitur-fitur yang tersedia ditentukan oleh pengaturan parameter setTraceId, sebagai berikut:

    • Jika parameter setTraceId tidak diberikan (default): Fitur pelaporan log instrumentasi diaktifkan. Anda kemudian dapat menggunakan fitur pemantauan kualitas pemutaran dan statistik pemutaran video, tetapi fitur pelacakan titik tunggal tidak tersedia.

    • Jika Anda memberikan parameter setTraceId dengan trace ID, Anda menentukan sendiri nilai trace ID tersebut. Nilai tersebut harus berupa pengenal unik untuk pengguna atau perangkat pengguna Anda, seperti ID pengguna bisnis Anda, IMEI, atau IDFA. Setelah Anda memberikan trace ID, fitur pelaporan log instrumentasi diaktifkan. Anda kemudian dapat menggunakan pemantauan kualitas pemutaran, pelacakan titik tunggal, dan statistik pemutaran video.

    • Jika Anda mengatur parameter setTraceId ke DisableAnalytics, pelaporan log instrumentasi dinonaktifkan. Anda tidak dapat menggunakan fitur pemantauan kualitas pemutaran, pelacakan titik tunggal, atau statistik pemutaran video.

  2. Atur tampilan.

    Pemutar mendukung AliDisplayView (direkomendasikan), SurfaceView, dan TextureView. Pilih salah satu sesuai kebutuhan.

    1. Deklarasikan tampilan dalam file XML.

      AliDisplayView (direkomendasikan)

      <!-- Tampilan rendering pemutar -->
      <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

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

      TextureView

      <!-- Tampilan rendering pemutar -->
      <TextureView
          android:id="@+id/texture_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="center" />
    2. Atur tampilan.

      AliDisplayView (direkomendasikan)

      Panggil antarmuka setDisplayView pemutar untuk mengikat tampilan pemutar.

      AliDisplayView mAliDisplayView = findViewById(R.id.display_view);
      // Atur jenis tampilan pemutaran menggunakan setPreferDisplayView()
      mAliDisplayView.setPreferDisplayView(AliDisplayView.DisplayViewType.SurfaceView);
      mAliPlayer.setDisplayView(mAliDisplayView);

      SurfaceView

      Panggil antarmuka setSurface pemutar untuk mengikat tampilan pemutar.

      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

      Panggil antarmuka setSurface pemutar untuk mengikat tampilan pemutar.

      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) {
      
          }
      });
  3. Atur sumber pemutaran.

    Pemutar mendukung empat sumber pemutaran: VidSts, VidAuth, VidMps, dan UrlSource. UrlSource digunakan untuk pemutaran URL langsung. Atur URL ke protokol artc:// untuk menggunakan layanan RTS.

    UrlSource urlSource = new UrlSource();
    urlSource.setUri("artc://<Streaming URL>");
    mAliPlayer.setDataSource(urlSource);
    Catatan

    Untuk informasi lebih lanjut tentang metode pengaturan sumber pemutaran, lihat Fitur Dasar.

  4. Konfigurasikan parameter pemutaran.

    Konfigurasikan parameter pemutaran untuk meningkatkan performa RTS.

    Catatan

    ApsaraVideo Player SDK V6.3.0 dan versi lebih baru mendukung konfigurasi latensi rendah optimal otomatis. Jika URL pemutaran dimulai dengan "artc://" dan Anda belum mengubah secara manual nilai mMaxDelayTime, mHighBufferDuration, dan mStartBufferDuration dalam PlayerConfig, SDK secara otomatis menggunakan nilai 1000, 10, dan 10 berturut-turut untuk pemutaran aktual.

    Untuk kontrol kustom, lihat contoh berikut:

    // 1. Dapatkan dan ubah konfigurasi
    PlayerConfig config = mAliPlayer.getConfig();
    if (playUrl.startWith("artc://")) {
        // Delay maksimum: 1000 milidetik
        config.mMaxDelayTime = 1000;
        // Durasi buffer saat startup pemutaran: 10 milidetik
        config.mStartBufferDuration = 10;
        // Durasi buffer untuk pemulihan tersendat: 10 milidetik
        config.mHighBufferDuration = 10;
    } else {
        // Gunakan konfigurasi default atau sesuaikan ke konfigurasi lain
    }
    
    // 2. Terapkan konfigurasi
    mAliPlayer.setConfig(config);
  5. Mulai pemutaran.

    // Siapkan untuk pemutaran
    mAliPlayer.prepare();
    // Mulai pemutaran
    mAliPlayer.start();

Kontrol pemutaran

ApsaraVideo Player SDK untuk Android mendukung operasi seperti memutar dari titik waktu tertentu, memulai, dan menghentikan pemutaran.

  1. Mulai pemutaran.

    Ini mengacu pada memulai pemutaran video, diimplementasikan melalui antarmuka start. Contohnya:

    mAliPlayer.start();
  2. Hentikan pemutaran.

    Ini mengacu pada menghentikan pemutaran video, diimplementasikan melalui antarmuka stop. Contohnya:

    mAliPlayer.stop();
  3. Hancurkan pemain.

    Hancurkan instans pemutar menggunakan metode penghancuran sinkron atau asinkron, sebagai berikut:

    // Penghancuran sinkron. Sistem secara otomatis memanggil antarmuka stop.
    mAliPlayer.release();
    // Penghancuran asinkron. Sistem secara otomatis memanggil antarmuka stop.
    mAliPlayer.releaseAsync();	
    Catatan

    Metode penghancuran sinkron hanya mengembalikan setelah semua sumber daya pemutar sepenuhnya dilepas. Jika Anda memiliki persyaratan tinggi terhadap kecepatan respons UI, gunakan metode penghancuran asinkron dan perhatikan hal berikut:

    1. Hindari melakukan operasi lain apa pun pada objek pemutar selama proses penghancuran asinkron.

    2. Anda tidak perlu menghentikan pemutar secara manual sebelum memanggil metode penghancuran asinkron, karena proses tersebut secara internal mencakup alur penghentian asinkron.

Fitur Tambahan

  1. Log switch.

    // Aktifkan logging
    Logger.getInstance(context).enableConsoleLog(true);
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_TRACE);
    // Nonaktifkan logging
    Logger.getInstance(context).enableConsoleLog(false);
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_NONE);
  2. Degradasi Live RTS.

    Catatan
    • Degradasi kegagalan pemutaran hanya berlaku untuk skenario timeout. Jika salah satu skema degradasi berikut dikonfigurasi dalam skenario timeout pemutaran, pemrosesan pemutaran terdegradasi akan terjadi; jika tidak, callback onError pemutar akan dipicu. Misalnya, pengecualian seperti 404, 403, atau koneksi streamer terputus tidak memicu degradasi.

    • Degradasi otomatis RTS menggunakan nama domain yang sama untuk mencapai degradasi dari RTS ke FLV. Jika nama domain RTS dan FLV Anda berbeda, konfigurasikan skema degradasi kustom RTS untuk menentukan nama domain FLV tujuan.

    1. Degradasi otomatis RTS (diaktifkan secara default)

      Dalam skenario di mana alamat Real-Time Streaming (RTS) digunakan untuk pemutaran, jika degradasi kustom RTS tidak dikonfigurasi dan penarikan aliran RTS gagal, sistem secara otomatis menurunkan spesifikasi ke alamat FLV default yang sesuai dengan RTS untuk pemutaran. Contohnya:

      // 1 berarti diaktifkan, 0 berarti dinonaktifkan. Diaktifkan secara default.
      AliPlayerGlobalSettings.setOption(AliPlayerGlobalSettings.ALLOW_RTS_DEGRADE, 1);
    2. Degradasi kustom RTS

      Dalam skenario di mana alamat Real-Time Streaming (RTS) digunakan untuk pemutaran, dengan mengatur alamat degradasi RTS (seperti alamat HLS atau FLV), jika penarikan aliran RTS gagal, sistem secara otomatis menurunkan spesifikasi ke alamat tersebut untuk pemutaran. Contohnya:

      PlayerConfig config = mAliPlayer.getConfig();
      // Opsional: Konfigurasikan item lain dalam config
      UrlSource urlSource = new UrlSource();
      urlSource.setUri(downgradeUrl);
      // Atur URL degradasi
      mAliPlayer.enableDowngrade(urlSource, config);
  3. Dapatkan TraceID.

    Setiap pemutaran latensi rendah memiliki traceId, yang digunakan untuk troubleshooting. Dapatkan traceId melalui callback event pemutar.

    // Dengarkan callback onInfo pemutar dan uraikan pesan DemuxerTraceID
    mAliPlayer.setOnInfoListener(infoBean -> {
        if (infoBean.getCode() == InfoCode.DemuxerTraceID) {
            String traceId = infoBean.getExtraMsg();
    });