全部产品
Search
文档中心

ApsaraVideo Live:Implementasikan penarikan aliran RTS pada Android

更新时间:Jan 16, 2026

Topik ini menjelaskan cara menggunakan kit pengembangan perangkat lunak (SDK) ApsaraVideo Player untuk Android guna mengimplementasikan RTS.

Integrasi SDK

Tambahkan dependensi SDK ApsaraVideo Player sebagai berikut:

  • Integrasi Maven

    1. Tambahkan alamat repositori Maven.

      Tambahkan alamat repositori Maven ke file build.gradle di direktori root proyek Anda.

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

      def player_sdk_version = "x.x.x" // Gunakan versi terbaru.
      def rts_sdk_version = "7.11.0" // Nomor versi independen. Ini adalah 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 sama dengan nomor versi pemutar. Harus diintegrasikan bersama komponen RTS.
      implementation "com.aliyun.sdk.android:AlivcArtc:$player_sdk_version"
      
      // Komponen RTS.
      implementation "com.aliyun.rts.android:RtsSDK:$rts_sdk_version"
      Penting
      • Nomor versi lapisan jembatan (AlivcArtc) harus sama dengan nomor versi pemutar. Anda harus mengintegrasikan lapisan jembatan bersama komponen RTS.

      • Untuk informasi lebih lanjut tentang versi pemutar, lihat SDK download. Kami menyarankan menggunakan versi terbaru. Pemutar harus V7.11.0 atau lebih baru, dan versi minimum yang didukung adalah V5.4.5.0.

      • Untuk jawaban atas pertanyaan umum, lihat FAQ Pemutar Android.

Gunakan API ApsaraVideo Player SDK

Panggil API SDK ApsaraVideo Player untuk mengimplementasikan fitur RTS. Untuk informasi lebih lanjut tentang fitur SDK ApsaraVideo Player, lihat Advanced features dan API reference.

Catatan
  • Kode berikut hanya sebagai contoh. Untuk kode lengkap, lihat modul RTS Playback dalam proyek API-Example. Proyek sampel Android berbasis Java ini membantu developer mengintegrasikan fitur inti SDK ApsaraVideo Player dengan cepat.

  • Saat menggunakan ApsaraVideo Player untuk penarikan aliran RTS, jangan panggil metode pause untuk menjeda siaran langsung. Sebagai gantinya, panggil metode stop untuk menghentikan pemutaran, lalu panggil metode prepare untuk memulai ulang pemutaran.

  • Operasi seek (seret) tidak didukung.

Muat pustaka RTS

Jika diperlukan, tambahkan System.loadLibrary("RtsSDK"); ke Activity yang sesuai.

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

Buat player

  1. Buat pemain.

    Buat instans AliPlayer menggunakan kelas AliPlayerFactory.

    // Buat instans pemutar.
    AliPlayer mAliPlayer = AliPlayerFactory.createAliPlayer(context);
    // Teruskan traceId.
    // Opsional: Kami menyarankan Anda menggunakan fitur Tracing Analysis. Saat terjadi exception selama pemutaran video dengan SDK ApsaraVideo Player, Anda dapat menggunakan fitur ini untuk melacak seluruh tautan untuk pengguna atau session pemutaran tertentu. Hal ini membantu Anda mendiagnosis masalah dengan cepat dan meningkatkan efisiensi administrasi pengalaman pemutaran.
    // Tentukan nilai traceId. Nilainya harus merupakan pengenal unik untuk pengguna atau perangkat mereka. Misalnya, teruskan ID pengguna bisnis Anda, atau ID perangkat seperti International Mobile Equipment Identity (IMEI) atau identifier for advertisers (IDFA).
    mAliPlayer.setTraceId("traceId");
    Catatan

    Fitur Playback Quality Monitoring (yang memungkinkan Anda melihat data kualitas pemutaran secara keseluruhan), fitur Tracing Analysis (yang memungkinkan Anda melokalisasi pengguna atau perangkat tertentu, menganalisis perilaku pemutaran mereka, dan mengidentifikasi masalah seperti anomali pemutaran dengan cepat), serta fitur Video Playback Statistics semuanya bergantung pada fitur pelaporan log instrumentasi.

    Saat membuat pemutar, fitur yang tersedia bergantung pada cara Anda mengatur parameter setTraceId:

    • Jika Anda tidak meneruskan parameter setTraceId (default): Fitur pelaporan log instrumentasi diaktifkan. Anda dapat menggunakan fitur playback quality monitoring dan video playback statistics. Fitur Tracing Analysis tidak tersedia.

    • Jika Anda meneruskan traceId ke parameter setTraceId: Anda harus menentukan nilai traceId tersebut. Nilainya harus merupakan pengenal unik untuk pengguna atau perangkat mereka, seperti ID pengguna bisnis, IMEI, atau IDFA. Setelah meneruskan traceId, fitur pelaporan log instrumentasi diaktifkan. Anda kemudian dapat menggunakan fitur playback quality monitoring, Tracing Analysis, dan video playback statistics.

    • Jika Anda mengatur parameter setTraceId ke DisableAnalytics: Fitur pelaporan log instrumentasi dinonaktifkan. Anda tidak dapat menggunakan fitur pemantauan kualitas pemutaran, Tracing Analysis, atau statistik pemutaran video.

  2. Atur tampilan layar.

    Pemutar mendukung AliDisplayView (disarankan), SurfaceView, dan TextureView. Anda dapat memilih salah satu tampilan berikut.

    1. Deklarasikan tampilan dalam file XML.

      AliDisplayView (disarankan)

      <!-- Tampilan rendering pemain -->
      <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 pemain -->
      <SurfaceView
          android:id="@+id/surface_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="center" />

      TextureView

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

      AliDisplayView (disarankan)

      Panggil metode setDisplayView dari pemutar untuk menyambungkan tampilan pemutar.

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

      SurfaceView

      Panggil metode setSurface dari pemutar untuk menyambungkan 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 metode setSurface dari pemutar untuk menyambungkan 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 jenis sumber pemutaran: VidSts, VidAuth, VidMps, dan UrlSource. UrlSource digunakan untuk pemutaran URL langsung. Untuk menggunakan layanan RTS, Anda harus mengatur protokol URL ke artc://.

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

    Untuk informasi selengkapnya tentang cara menetapkan sumber pemutaran, lihat Fitur dasar.

  4. Konfigurasikan parameter pemutaran.

    Konfigurasikan parameter pemutaran untuk meningkatkan performa RTS.

    Catatan

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

    Untuk menyesuaikan kontrol, lihat contoh berikut:

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

    // Persiapkan pemutaran.
    mAliPlayer.prepare();
    // Mulai pemutaran.
    mAliPlayer.start();

Kontrol pemutaran

ApsaraVideo Player SDK untuk Android mendukung operasi seperti memulai dan menghentikan pemutaran.

  1. Mulai Pemutaran.

    Mulai pemutaran video menggunakan metode start. Contoh berikut menunjukkan cara melakukannya:

    mAliPlayer.start();
  2. Hentikan Pemutaran.

    Hentikan pemutaran video menggunakan metode stop. Contoh berikut menunjukkan cara melakukannya:

    mAliPlayer.stop();
  3. Hapus Pemain.

    Hapus instans pemutar. Anda dapat menghapus instans tersebut dalam mode sinkron atau asinkron. Contoh berikut menunjukkan cara melakukannya:

    // Hapus secara sinkron. Metode stop dipanggil secara otomatis.
    mAliPlayer.release();
    // Hapus secara asinkron. Metode stop dipanggil secara otomatis.
    mAliPlayer.releaseAsync();	
    Catatan

    Metode hapus sinkron hanya mengembalikan nilai setelah semua sumber daya pemutar dilepas. Jika antarmuka Anda memerlukan respons cepat, kami menyarankan menggunakan metode hapus asinkron. Perhatikan hal berikut:

    1. Jangan melakukan operasi lain pada objek pemutar selama proses penghapusan asinkron.

    2. Anda tidak perlu menghentikan pemutar secara manual sebelum memanggil metode hapus asinkron karena proses tersebut sudah mencakup alur penghentian asinkron.

Fitur tambahan

  1. Aktifkan atau Nonaktifkan Pencatatan.

    // Aktifkan pencatatan.
    Logger.getInstance(context).enableConsoleLog(true);
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_TRACE);
    // Nonaktifkan pencatatan.
    Logger.getInstance(context).enableConsoleLog(false);
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_NONE);
  2. Fallback aliran RTS.

    Catatan
    • Fallback pemutaran hanya berlaku untuk skenario timeout. Dalam skenario timeout pemutaran, jika solusi fallback dikonfigurasi, pemutar akan mencoba melakukan fallback. Jika tidak, callback onError pemutar akan dipicu. Exception seperti error 404 atau 403 atau pemutusan koneksi streamer tidak memicu fallback.

    • Fallback RTS otomatis menggunakan nama domain yang sama untuk melakukan fallback dari RTS ke FLV. Jika nama domain RTS dan FLV Anda berbeda, Anda harus mengonfigurasi solusi fallback RTS kustom untuk menentukan nama domain FLV tujuan.

    1. Fallback RTS otomatis (diaktifkan secara default)

      Saat Anda memutar aliran dari URL RTS, jika fallback RTS kustom tidak dikonfigurasi dan penarikan aliran RTS gagal, pemutar secara otomatis melakukan fallback ke URL FLV default yang sesuai untuk pemutaran. Contoh berikut menunjukkan cara melakukannya:

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

      Saat Anda memutar aliran dari URL RTS, Anda dapat mengatur URL fallback, seperti URL HLS atau FLV. Jika penarikan aliran RTS gagal, pemutar secara otomatis melakukan fallback ke URL ini untuk pemutaran. Contoh berikut menunjukkan cara melakukannya:

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

    Setiap sesi pemutaran latensi rendah memiliki traceId yang dapat Anda gunakan untuk troubleshooting. Anda dapat memperoleh traceId melalui callback event pemutar.

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