全部产品
Search
文档中心

ApsaraVideo VOD:Fitur Dasar

更新时间:Nov 21, 2025

Topik ini menjelaskan cara membuat instans pemutar Android dan memberikan contoh penggunaan fitur pemutaran dasar, seperti mengatur volume, mengaktifkan pencarian video, mendengarkan status pemutaran, mengaktifkan putar ulang berulang, mengatur kecepatan pemutaran, serta mengganti trek audio.

Penting

Untuk mencoba demo, unduh dan ikuti petunjuk di Jalankan demo untuk mengompilasi dan menjalankannya.

Atur sumber data (DataSource)

  • SDK ApsaraVideo Player untuk Android mendukung empat metode pemutaran video sesuai permintaan (VOD): VidAuth (direkomendasikan untuk pengguna ApsaraVideo VOD), VidSts, UrlSource, dan pemutaran terenkripsi.

  • SDK ApsaraVideo Player untuk Android mendukung dua metode pemutaran streaming langsung: UrlSource dan pemutaran terenkripsi.

Catatan
  • UrlSource menggunakan URL untuk pemutaran, sedangkan VidSts dan VidAuth menggunakan ID video (VID).

  • Untuk informasi lebih lanjut tentang wilayah, lihat ID Wilayah untuk ApsaraVideo VOD.

Pemutaran VOD

Pemutaran VOD menggunakan VidAuth (Direkomendasikan)

Untuk memutar video VOD menggunakan VidAuth, atur properti vid pemutar ke ID audio atau video dan properti playauth ke kredensial pemutaran audio atau video.

  • Anda dapat memperoleh ID audio atau video dari konsol ApsaraVideo VOD setelah mengunggah file audio atau video. Untuk melakukannya, buka File Media > Audio/Video. Anda juga dapat memperoleh ID tersebut dengan memanggil operasi SearchMedia.

  • Anda dapat memperoleh kredensial pemutaran audio atau video dengan memanggil operasi GetVideoPlayAuth. Kami menyarankan agar Anda mengintegrasikan SDK sisi server ApsaraVideo VOD untuk memperoleh kredensial pemutaran guna menghindari kerumitan penandatanganan mandiri. Contoh cara memanggil operasi tersebut tersedia di Portal API.

Kami menyarankan pengguna ApsaraVideo VOD menggunakan metode ini karena VidAuth lebih mudah digunakan dan lebih aman dibandingkan VidSts. Untuk perbandingan mendetail, lihat Perbandingan antara kredensial pemutaran dan STS.

Jika Anda mengaktifkan transmisi langsung parameter enkripsi HLS di konsol ApsaraVideo VOD, nama parameter defaultnya adalah MtsHIsUriToken. Untuk informasi lebih lanjut, lihat Transmisi langsung parameter enkripsi HLS. Atur nilai MtsHIsUriToken dalam sumber VOD seperti yang ditunjukkan pada kode berikut.

VidAuth vidAuth = new VidAuth();
   vidAuth.setVid("ID video.");// Wajib diisi. ID video.
   vidAuth.setPlayAuth("<yourPlayAuth>");// Wajib diisi. Kredensial pemutaran. Anda harus memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
   vidAuth.setRegion("Wilayah tempat ApsaraVideo VOD diaktifkan.");// Parameter ini tidak digunakan lagi mulai SDK ApsaraVideo Player versi V5.5.5.0 dan seterusnya. Anda tidak perlu mengatur wilayah karena pemutar akan menguraikannya secara otomatis. Untuk versi sebelum V5.5.5.0, parameter ini wajib diisi. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
   // vidAuth.setAuthTimeout(3600);// Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur di konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 3600 akan digunakan. Jika Anda mengatur parameter ini, pastikan periode validitasnya lebih lama daripada durasi video aktual agar URL pemutaran tidak kedaluwarsa sebelum pemutaran selesai.
        
   //Jika Anda mengaktifkan transmisi langsung parameter enkripsi HLS di konsol ApsaraVideo VOD dan nama parameter defaultnya adalah MtsHlsUriToken, Anda harus mengatur konfigurasi dan meneruskannya ke vid. Untuk informasi lebih lanjut, lihat kode berikut.
   VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
   vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
   vidAuth.setPlayerConfig(config);
   aliPlayer.setDataSource(vidAuth);

Pemutaran VOD menggunakan VidSts

Pemutaran VOD menggunakan VidSts berarti memutar video VOD dengan kredensial sementara Layanan Token Keamanan (STS) alih-alih kredensial pemutaran VOD. Anda harus terlebih dahulu memperoleh token STS dan pasangan AccessKey sementara (ID AccessKey dan Rahasia AccessKey). Untuk informasi lebih lanjut, lihat Memperoleh token STS.

Jika Anda mengaktifkan transmisi langsung parameter enkripsi HLS di konsol ApsaraVideo VOD, nama parameter defaultnya adalah MtsHIsUriToken. Untuk informasi lebih lanjut, lihat Transmisi langsung parameter enkripsi HLS. Atur nilai MtsHIsUriToken dalam sumber VOD seperti yang ditunjukkan pada kode berikut.

VidSts vidSts = new VidSts();
       vidSts.setVid("ID video.");// Wajib diisi. ID video.
       vidSts.setAccessKeyId("<yourAccessKeyId>");// Wajib diisi. ID AccessKey dari pasangan AccessKey sementara. Anda harus memanggil operasi AssumeRole STS untuk menghasilkan ID AccessKey ini.
       vidSts.setAccessKeySecret("<yourAccessKeySecret>");// Wajib diisi. Rahasia AccessKey dari pasangan AccessKey sementara. Anda harus memanggil operasi AssumeRole STS untuk menghasilkan Rahasia AccessKey ini.
       vidSts.setSecurityToken("<yourSecurityToken>");// Wajib diisi. Token STS. Anda harus memanggil operasi AssumeRole STS untuk menghasilkan token ini.
       vidSts.setRegion("Wilayah tempat ApsaraVideo VOD diaktifkan.");// Wajib diisi. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
       // vidSts.setAuthTimeout(3600);// Periode validitas URL pemutaran dalam detik. Nilai ini menimpa periode validitas penandatanganan URL yang diatur di konsol ApsaraVideo VOD. Jika Anda tidak mengatur parameter ini, nilai default 3600 akan digunakan. Jika Anda mengatur parameter ini, pastikan periode validitasnya lebih lama daripada durasi video aktual agar URL pemutaran tidak kedaluwarsa sebelum pemutaran selesai.
        
       //Jika Anda mengaktifkan transmisi langsung parameter enkripsi HLS di konsol ApsaraVideo VOD dan nama parameter defaultnya adalah MtsHlsUriToken, Anda harus mengatur konfigurasi dan meneruskannya ke vid. Untuk informasi lebih lanjut, lihat kode berikut.
       //Jika Anda tidak mengaktifkan transmisi langsung parameter enkripsi HLS di konsol ApsaraVideo VOD, Anda tidak perlu mengintegrasikan kode berikut.
       VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
       vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
       vidSts.setPlayerConfig(config);
       aliPlayer.setDataSource(vidSts);

Pemutaran VOD menggunakan UrlSource

Untuk memutar video VOD menggunakan UrlSource, atur properti setUrl pemutar ke URL pemutaran.

  • URL pemutaran di ApsaraVideo VOD: Anda dapat memanggil operasi GetPlayInfo untuk memperoleh URL tersebut. Kami menyarankan agar Anda mengintegrasikan SDK sisi server ApsaraVideo VOD untuk memperoleh URL pemutaran audio atau video guna menghindari kerumitan penandatanganan mandiri. Contoh cara memanggil operasi tersebut tersedia di Portal API.

  • Alamat video lokal: Pastikan Anda memiliki izin akses yang diperlukan. Anda dapat memanggil API sistem untuk memperoleh jalur lengkap file video lokal yang dapat diakses, seperti /sdcard/xxx/xxx/xxx.mp4 atau content://xxx/xxx/xx.mp4.

 UrlSource urlSource = new UrlSource();
        urlSource.setUri("URL pemutaran.");// Wajib diisi. URL pemutaran. URL dapat berupa URL VOD pihak ketiga, URL pemutaran di ApsaraVideo VOD, atau alamat video lokal.
        aliPlayer.setDataSource(urlSource);

Pemutaran VOD terenkripsi

Video VOD mendukung enkripsi HLS, enkripsi privat Alibaba Cloud, dan enkripsi DRM. Untuk informasi lebih lanjut tentang pemutaran terenkripsi, lihat Memutar video terenkripsi di Android.

Pemutaran streaming langsung

Untuk informasi selengkapnya, lihat Pemutaran streaming langsung standar.

Kontrol pemutaran

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

Persiapkan pemutaran

Metode prepare mempersiapkan pemutar untuk pemutaran video. Contoh berikut menunjukkan cara bersiap untuk pemutaran:

aliPlayer.prepare();

Mulai pemutaran

Metode start memulai pemutaran video. Contoh berikut menunjukkan cara memulai pemutaran:

aliPlayer.start();

Memulai pemutaran dari waktu tertentu

Anda dapat menggunakan metode seekTo untuk memulai pemutaran dari waktu tertentu. Metode ini berguna untuk skenario di mana pengguna menyeret bilah kemajuan atau melanjutkan pemutaran dari waktu tertentu. Contoh berikut menunjukkan cara memulai pemutaran dari waktu tertentu:

// position adalah waktu tertentu dalam milidetik.
aliPlayer.seekTo(long position);

Anda dapat memulai pemutaran dari posisi tertentu, yang berguna ketika pengguna ingin memulai pemutaran dari waktu tertentu. Untuk menggunakan fitur ini, Anda harus memanggil metode terkait sekali sebelum setiap pemanggilan prepare. Contoh berikut menunjukkan cara memulai pemutaran dari posisi tertentu:

// Atur waktu mulai dalam milidetik untuk pemanggilan prepare berikutnya dari pemutar. Pengaturan ini hanya berlaku untuk pemanggilan prepare berikutnya.
// Setelah Anda memanggil prepare, nilai ini secara otomatis diatur ulang menjadi nol. Jika Anda tidak memanggil metode ini lagi sebelum pemanggilan prepare berikutnya, pemutaran dimulai secara normal.
// Anda dapat mengatur seekMode ke mode akurat atau tidak akurat.
aliPlayer.setStartTime(time, seekMode);

Jeda pemutaran

Metode pause menjeda pemutaran video. Contoh berikut menunjukkan cara menjeda pemutaran:

aliPlayer.pause();

Lanjutkan pemutaran

Metode start juga digunakan untuk melanjutkan pemutaran video. Contoh berikut menunjukkan cara melanjutkan pemutaran:

aliPlayer.start();

Hentikan pemutaran

Metode stop menghentikan pemutaran video. Contoh berikut menunjukkan cara menghentikan pemutaran:

aliPlayer.stop();

Hancurkan pemain

Anda dapat menghapus instans pemutar menggunakan metode sinkron atau asinkron. Contoh berikut menunjukkan cara menghapus pemutar:

//Penghapusan sinkron. Metode stop dipanggil secara otomatis.
aliPlayer.release();
//Penghapusan asinkron. Metode stop dipanggil secara otomatis.
aliPlayer.releaseAsync();	
Catatan

Jika Anda memanggil metode penghapusan sinkron, metode tersebut baru akan mengembalikan nilai setelah sumber daya pemutar sepenuhnya dilepas. Jika Anda memiliki persyaratan tinggi terhadap kecepatan respons antarmuka, gunakan metode penghapusan asinkron dan perhatikan hal-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 penghapusan asinkron karena proses tersebut sudah mencakup prosedur penghentian asinkron.

Dengarkan status pemutar

SDK ApsaraVideo Player untuk Android memungkinkan Anda mengatur pendengar pemutar dan mendengarkan status pemutar.

Atur pendengar pemutar

Pemutar mendukung pengaturan beberapa pendengar.

  • OnErrorListener, OnCompletionListener, OnLoadingStatusListener, dan OnInfoListener sangat penting. Atur sesuai kebutuhan.

aliPlayer.setOnErrorListener(new IPlayer.OnErrorListener() {
    //Callback ini dipanggil jika terjadi kesalahan saat menggunakan pemutar.

    @Override
    public void onError(ErrorInfo errorInfo) {
        ErrorCode errorCode = errorInfo.getCode(); //Kode kesalahan.
        String errorMsg = errorInfo.getMsg(); //Deskripsi kesalahan.
        //errorExtra menunjukkan informasi kesalahan tambahan dalam format string JSON. Contoh: Perhatikan bahwa ModuleCode tidak sepenuhnya setara dengan errorCode.
        //{ "Url": "xxx",
   		//	"Module": "NetWork",
    	//	"ModuleCode": "-377",
   		//  "ModuleMessage": "Redirect to a url that is not a media"}
        String errorExtra= errorInfo.getExtra();         
        //Setelah terjadi kesalahan, Anda harus menghentikan pemutar.
        aliPlayer.stop();
    }
});
aliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
    // Setelah Anda memanggil metode aliPlayer.prepare(), pemutar mulai membaca dan mengurai data. Jika operasi berhasil, callback ini dipanggil.

    @Override
    public void onPrepared() {
        // Persiapan selesai.
    }
});
aliPlayer.setOnCompletionListener(new IPlayer.OnCompletionListener() {
    //Setelah pemutaran selesai, callback ini dipanggil.
    @Override
    public void onCompletion() {
        //Anda dapat memanggil stop untuk menghentikan pemutaran video.
        aliPlayer.stop();
    }
});
aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    //Informasi tentang pemutar, termasuk kemajuan saat ini dan posisi buffering.
    @Override
    public void onInfo(InfoBean infoBean) {
        InfoCode code = infoBean.getCode(); //Kode informasi.
        String msg = infoBean.getExtraMsg();//Konten informasi.
        long value = infoBean.getExtraValue(); //Nilai informasi.

        //Kemajuan saat ini: InfoCode.CurrentPosition
        //Posisi buffering saat ini: InfoCode.BufferedPosition
    }
});
aliPlayer.setOnLoadingStatusListener(new IPlayer.OnLoadingStatusListener() {
    //Status pemuatan pemutar. Saat jaringan buruk, ini digunakan untuk menampilkan layar pemuatan.

    @Override
    public void onLoadingBegin() {
        //Pemuatan dimulai. Video dan audio belum siap untuk diputar.
        //Anda dapat menampilkan lingkaran pemuatan di sini.
    }

    @Override
    public void onLoadingProgress(int percent, float netSpeed) {
        //Kemajuan pemuatan. Persentase dan kecepatan jaringan.
        //Kecepatan jaringan adalah bidang cadangan dan sementara bernilai 0.
    }

    @Override
    public void onLoadingEnd() {
        //Pemuatan selesai. Video dan audio siap untuk diputar.
        //Anda dapat menyembunyikan lingkaran pemuatan di sini.
    }
});

Mendengarkan status pemutaran

Anda dapat mendengarkan status pemutar. Parameter callback onStateChanged adalah status pemutar saat ini. Contoh berikut menunjukkan cara mendengarkan status pemutaran:

aliPlayer.setOnStateChangedListener(new IPlayer.OnStateChangedListener() {
    @Override
    public void onStateChanged(int newState) {
        /*
          int idle = 0;
          int initalized = 1;
          int prepared = 2;
          int started = 3;
          int paused = 4;
          int stopped = 5;
          int completion = 6;
          int error = 7;
      */
    }
});

Atur mode tampilan

SDK ApsaraVideo Player untuk Android mendukung pengaturan tampilan seperti mengisi, memutar, dan mencerminkan.

Mengisi

Metode setScaleMode mengatur mode pengisian. SDK mendukung tiga mode pengisian: sesuai rasio aspek, isi rasio aspek, dan regangkan hingga penuh. Contoh berikut menunjukkan cara mengatur mode pengisian:

// Atur mode ke sesuai rasio aspek. Video diperkecil agar sesuai dalam tampilan tanpa merusak gambar.
aliPlayer.setScaleMode(ScaleMode.SCALE_ASPECT_FIT);
// Atur mode ke isi rasio aspek. Video diperbesar agar mengisi tampilan tanpa merusak gambar.
aliPlayer.setScaleMode(ScaleMode.SCALE_ASPECT_FILL);
// Atur mode ke regangkan hingga penuh. Jika rasio aspek video tidak sesuai dengan rasio aspek tampilan, gambar akan rusak.
aliPlayer.setScaleMode(ScaleMode.SCALE_TO_FILL);

Putar

Metode setRotateMode memutar gambar dengan sudut tertentu. Setelah mengatur rotasi, Anda juga dapat menanyakan sudut rotasi. Contoh berikut menunjukkan cara memutar gambar:

// Putar gambar 0 derajat searah jarum jam.
aliPlayer.setRotateMode(RotateMode.ROTATE_0);
// Putar gambar 90 derajat searah jarum jam.
aliPlayer.setRotateMode(RotateMode.ROTATE_90);
// Putar gambar 180 derajat searah jarum jam.
aliPlayer.setRotateMode(RotateMode.ROTATE_180);
// Putar gambar 270 derajat searah jarum jam.
aliPlayer.setRotateMode(RotateMode.ROTATE_270);
// Peroleh sudut rotasi.
aliPlayer.getRotateMode();

Cerminkan

Metode setMirrorMode menampilkan gambar dengan efek cermin yang berbeda. SDK mendukung cermin horizontal, cermin vertikal, dan tanpa cermin. Contoh berikut menunjukkan cara mengatur mode cermin:

// Atur mode ke tanpa cermin.
aliPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_NONE);
// Atur mode ke cermin horizontal.
aliPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_HORIZONTAL);
// Atur mode ke cermin vertikal.
aliPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_VERTICAL);

Memperoleh informasi pemutaran

SDK ApsaraVideo Player untuk Android menyediakan akses ke informasi seperti kemajuan pemutaran saat ini, durasi pemutaran, dan kemajuan buffering.

Memperoleh kemajuan pemutaran saat ini

Anda dapat memperoleh waktu pemutaran saat ini dari callback onInfo. Untuk melakukannya, panggil metode getExtraValue. Contoh berikut menunjukkan cara memperoleh kemajuan pemutaran saat ini:

aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    @Override
    public void onInfo(InfoBean infoBean) {
        if(infoBean.getCode() == InfoCode.CurrentPosition){
            // extraValue adalah kemajuan pemutaran saat ini dalam milidetik.
            long extraValue = infoBean.getExtraValue();
        }
    }
});

Memperoleh durasi pemutaran

Anda dapat memperoleh durasi total video menggunakan metode getDuration. Durasi hanya tersedia setelah video dimuat, yaitu setelah event onPrepared. Contoh berikut menunjukkan cara memperoleh durasi pemutaran:

long duration = aliPlayer.getDuration();

Memperoleh durasi pemutaran aktual

Anda dapat memperoleh durasi pemutaran aktual secara real time. Durasi ini tidak termasuk waktu yang dihabiskan untuk jeda atau tersendat. Contoh berikut menunjukkan cara memperoleh durasi ini:

long duration = aliPlayer.getPlayedDuration();

Memperoleh kemajuan buffering

Anda dapat memperoleh informasi kemajuan buffering video saat ini dengan memanggil metode getExtraValue dalam callback onInfo. Contoh kode berikut menunjukkan cara penggunaannya:

aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    @Override
    public void onInfo(InfoBean infoBean) {
        if(infoBean.getCode() == InfoCode.BufferedPosition){
            // Parameter extraValue menunjukkan kemajuan buffering. Satuan: milidetik.
            long extraValue = infoBean.getExtraValue();
        }
    }
});

Memperoleh laju frame rendering real-time, bitrate audio dan video, serta bitrate unduh jaringan

Contohnya:

// Memperoleh laju frame rendering saat ini. Data yang dikembalikan bertipe FLOAT.
aliPlayer.getOption(IPlayer.Option.RenderFPS);
// Memperoleh bitrate video saat ini. Data yang dikembalikan bertipe FLOAT. Satuan: bit/detik.
aliPlayer.getOption(IPlayer.Option.VideoBitrate);
// Memperoleh bitrate audio saat ini. Data yang dikembalikan bertipe FLOAT. Satuan: bit/detik.
aliPlayer.getOption(IPlayer.Option.AudioBitrate);
// Memperoleh bitrate downlink jaringan saat ini. Data yang dikembalikan bertipe FLOAT. Satuan: bit/detik.
aliPlayer.getOption(IPlayer.Option.DownloadBitrate);

Callback untuk desinkronisasi audio dan video

Dalam kondisi ekstrem, seperti decoding perangkat lunak video 4K atau pemutaran berkecepatan tinggi aliran H.265 definisi tinggi pada perangkat kelas bawah, kinerja decoding mungkin tidak mengimbangi kecepatan pemutaran. Dalam kasus seperti itu, callback dipicu. Contoh berikut menunjukkan callback tersebut:

aliPlayer.setOnAVNotSyncStatusListener(new IPlayer.OnAVNotSyncStatusListener() {
    @Override
    public void onAVNotSyncStart(int type) {
        if (type == 0) {
            // Atur kecepatan pemutaran yang lebih rendah.
            if (aliPlayer.getSpeed() > 1) {
                aliPlayer.setSpeed(1);
            }
        }
        Toast.makeText(getContext(), "Desinkronisasi dimulai" , Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onAVNotSyncEnd() {
        Toast.makeText(getContext(), "Desinkronisasi berakhir" , Toast.LENGTH_SHORT).show();
    }
});

Atur volume

Pengaturan volume mencakup penyesuaian volume dan membisukan pemutaran.

Sesuaikan volume

Anda dapat menyesuaikan volume menggunakan metode setVolume. Volume dapat diatur dari 0 hingga 2. Jika volume lebih besar dari 1, kebisingan mungkin terjadi. Kami menyarankan agar Anda tidak mengatur volume ke nilai lebih dari 1. Setelah mengatur volume, Anda juga dapat mengambil tingkat volume saat ini. Contoh berikut menunjukkan cara menyesuaikan volume:

// Volume adalah bilangan real dari 0 hingga 2.
aliPlayer.setVolume(1f);
// Memperoleh volume.
aliPlayer.getVolume();

Membisukan pemutaran

Anda dapat membisukan video menggunakan metode setMute. Contoh berikut menunjukkan cara membisukan pemutaran:

aliPlayer.setMute(true);

Atur kecepatan pemutaran

SDK ApsaraVideo Player untuk Android menyediakan fitur untuk mengatur kecepatan pemutaran. Dengan memanggil metode setSpeed, Anda dapat memutar video dengan kecepatan 0,5× hingga 5× kecepatan aslinya sambil mempertahankan pitch asli. Contoh berikut menunjukkan cara mengatur kecepatan pemutaran:

// Atur kecepatan pemutaran. Rentang kecepatan yang didukung adalah 0,5 hingga 5,0. Kami menyarankan agar Anda mengatur kecepatan dalam kelipatan 0,5, misalnya 0,5; 1,0; dan 1,5.
aliPlayer.setSpeed(1.0f);

Atur beberapa resolusi

Catatan

Untuk contoh kode mendetail, lihat modul MultiResolution di API-Example. Proyek ini adalah proyek contoh berbasis Java untuk SDK ApsaraVideo Player untuk Android yang membantu pengembang mengintegrasikan fitur inti SDK dengan cepat.

Streaming langsung dengan UrlSource

Untuk informasi selengkapnya, lihat Pemutaran streaming langsung standar.

Pemutaran VOD dengan Vid (VidAuth atau VidSts)

Jika Anda menggunakan pemutaran berbasis Vid (VidAuth atau VidSts), tidak diperlukan pengaturan tambahan. SDK ApsaraVideo Player untuk Android memperoleh daftar resolusi dari ApsaraVideo VOD.

Memperoleh resolusi

Setelah video dimuat, Anda dapat memperoleh resolusi video.

//Memperoleh semua informasi aliran aset media.
List<TrackInfo> trackInfos = aliPlayer.getMediaInfo().getTrackInfos();
//Telusuri aliran dan peroleh resolusi.
for (TrackInfo trackInfo : trackInfos) {
     if(trackInfo.getType() == TrackInfo.Type.TYPE_VOD){
             //Memperoleh resolusi video.
        String vodDefinition = trackInfo.getVodDefinition();
     }
}

Mengganti resolusi

Anda dapat memanggil metode selectTrack untuk mengganti resolusi dengan meneruskan indeks TrackInfo yang sesuai sebagai parameter.

aliPlayer.selectTrack(index);

Notifikasi untuk pengalihan resolusi

SDK menyediakan callback untuk pengalihan resolusi yang berhasil dan gagal.

aliPlayer.setOnTrackChangedListener(new IPlayer.OnTrackChangedListener() {
    @Override
    public void onChangedSuccess(TrackInfo trackInfo) { }

    @Override
    public void onChangedFail(TrackInfo trackInfo, ErrorInfo errorInfo) { }
});

Mode pengalihan cepat

Setelah Anda mengaktifkan mode pengalihan cepat, pemanggilan manual ke selectTrack akan menerima respons cepat.

PlayerConfig config = aliPlayer.getConfig();
config.mSelectTrackBufferMode = 1;
aliPlayer.setConfig(config)

Aktifkan putar ulang berulang

SDK ApsaraVideo Player untuk Android menyediakan fitur untuk mengaktifkan putar ulang berulang video. Anda dapat memanggil setLoop untuk mengaktifkan putar ulang berulang. Setelah pemutaran selesai, video akan otomatis mulai memutar dari awal. Contoh berikut menunjukkan cara mengaktifkan putar ulang berulang:

aliPlayer.setLoop(true);

Notifikasi untuk awal putaran dikirim melalui callback onInfo. Contoh berikut menunjukkan callback tersebut:

aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
    @Override
    public void onInfo(InfoBean infoBean) {
        if (infoBean.getCode() == InfoCode.LoopingStart){
            // Dengarkan event saat putar ulang berulang dimulai.
        }
    }
});

Beralih trek audio

SDK ApsaraVideo Player untuk Android menyediakan fitur untuk mengganti trek audio, yang berlaku untuk skenario di mana pengguna dapat beralih antar bahasa berbeda saat menonton video dengan audio multi-bahasa.

Petunjuk

Saat ini, SDK mendukung penggantian antar aliran audio untuk aliran non-playlist (seperti aliran MP4), aliran HLS campuran bitrate tunggal, dan aliran HLS non-campuran bitrate tunggal. SDK juga mendukung penggantian antar substream untuk aliran HLS campuran multi-bitrate. Tabel berikut menjelaskan jenis aliran video.

Jenis aliran video

Akhiran aliran video

Jumlah bitrate

Jumlah file sub-m3u8

Tipe subaliran

Petunjuk pengalihan

Aliran non-playlist (seperti aliran MP4)

.mp4

1

-

Aliran pemutaran berisi satu aliran video dan mungkin berisi beberapa aliran audio serta aliran takarir.

Pengalihan antar beberapa aliran audio didukung.

Aliran HLS campuran bitrate tunggal

.m3u8

1

1

Aliran pemutaran berisi satu aliran video dan mungkin berisi beberapa aliran audio serta aliran takarir.

Pengalihan antar beberapa aliran audio didukung.

Aliran HLS non-campuran laju tunggal

.m3u8

1

n

m3u8. Setiap subaliran hanya dapat berupa aliran video, aliran audio, atau aliran teks.

Pengalihan antar beberapa aliran audio didukung.

Aliran HLS campuran multi-bitrate

.m3u8

n

n

m3u8. Setiap substream berisi satu aliran video dan mungkin berisi beberapa aliran audio serta aliran takarir. Substream berbeda memiliki bitrate berbeda.

Saat ini, hanya pengalihan antar subaliran yang didukung. Pengalihan antar beberapa aliran audio dalam satu subaliran tidak didukung.

Contoh

  1. Atur callback.

    aliPlayer.setOnSubTrackReadyListener(new IPlayer.OnSubTrackReadyListener() {
        @Override
        //Callback onSubTrackReady biasanya dipicu sebelum callback prepare.
        public void onSubTrackReady(MediaInfo mediaInfo) {
            if (mPlayerTrackFragment != null) {
                //mPlayerTrackFragment.showMediaInfo();
                //Anda dapat memanggil getSubMediaInfo untuk memperoleh informasi MediaInfo. Anda hanya dapat memanggil metode ini setelah menerima callback onSubTrackReady. Jika tidak, nilai null akan dikembalikan.
                MediaInfo subMediaInfo = aliPlayer.getSubMediaInfo();
                TrackInfos = subMediaInfo.getTrackInfos();
                //Tentukan trek yang akan dipilih.
                myTrack = myfunc(TrackInfos)
            }
        }
    });
  2. Alihkan trek audio.

    index = myTrack.getIndex();
    aliPlayer.selectTrack(index);

Gunakan gambar mini

Catatan

Untuk contoh kode mendetail, lihat modul Thumbnail di API-Example. Proyek ini adalah proyek contoh berbasis Java untuk SDK ApsaraVideo Player untuk Android yang membantu pengembang mengintegrasikan fitur inti SDK dengan cepat.

Sebelum menggunakan gambar mini di SDK ApsaraVideo Player, pastikan Anda telah mengonfigurasi gambar mini untuk video tersebut. Ini mengharuskan sprite telah dibuat untuk video tersebut. Di konsol ApsaraVideo VOD, buat templat tangkapan layar sprite. Kemudian, gunakan alur kerja untuk memproses video dengan templat tangkapan layar sprite guna menghasilkan data sprite. Untuk informasi lebih lanjut, lihat Tangkapan layar video. Contoh berikut menunjukkan cara menggunakan gambar mini di SDK ApsaraVideo Player:

mAliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
    @Override
    public void onPrepared() {
        //1. Peroleh URL gambar mini.
        List<Thumbnail> thumbnailList = mAliPlayer.getMediaInfo().getThumbnailList();
        //2. Buat kelas helper gambar mini.
        ThumbnailHelper mThumbnailHelper = new ThumbnailHelper(thumbnailList.get(0).mURL);
        //3. Atur pendengar.
        mThumbnailHelper.setOnPrepareListener(new ThumbnailHelper.OnPrepareListener() {
            @Override
            public void onPrepareSuccess() {
                //5. Setelah gambar mini dimuat, Anda dapat meminta gambar mini pada posisi tertentu.
            }
            @Override
            public void onPrepareFail() {}
        });

        mThumbnailHelper.setOnThumbnailGetListener(new ThumbnailHelper.OnThumbnailGetListener() {
            @Override
            public void onThumbnailGetSuccess(long positionMs, ThumbnailBitmapInfo thumbnailBitmapInfo) {
                //6. Peroleh bitmap gambar mini pada posisi tertentu.
                Bitmap thumbnailBitmap = thumbnailBitmapInfo.getThumbnailBitmap();
            }
            @Override
            public void onThumbnailGetFail(long positionMs, String errorMsg) {}
        });

        //4. Muat gambar mini.
        mThumbnailHelper.prepare();
    }
});

Catatan: Jika Anda menggunakan pemutaran berbasis URL, AliPlayer mungkin tidak dapat memperoleh ThumbnailList. Tentukan URL gambar mini secara langsung.

mAliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
    @Override
    public void onPrepared() {
        //1. Buat kelas helper gambar mini.
        ThumbnailHelper mThumbnailHelper = new ThumbnailHelper(URL);
        //2. Atur pendengar.
        mThumbnailHelper.setOnPrepareListener(new ThumbnailHelper.OnPrepareListener() {
            @Override
            public void onPrepareSuccess() {
                //4. Setelah gambar mini dimuat, Anda dapat meminta gambar mini pada posisi tertentu.
            }
            @Override
            public void onPrepareFail() {}
        });

        mThumbnailHelper.setOnThumbnailGetListener(new ThumbnailHelper.OnThumbnailGetListener() {
            @Override
            public void onThumbnailGetSuccess(long positionMs, ThumbnailBitmapInfo thumbnailBitmapInfo) {
                //5. Peroleh bitmap gambar mini pada posisi tertentu.
                Bitmap thumbnailBitmap = thumbnailBitmapInfo.getThumbnailBitmap();
            }
            @Override
            public void onThumbnailGetFail(long positionMs, String errorMsg) {}
        });

        //3. Muat gambar mini.
        mThumbnailHelper.prepare();
    }
});

Memperoleh log SDK

Selama waktu proses SDK ApsaraVideo Player, informasi log mendetail dihasilkan, mencakup status permintaan jaringan, hasil panggilan sistem, dan permintaan izin. Hal ini membantu pengembang melakukan debug kode atau memecahkan masalah dan meningkatkan efisiensi pengembangan.

Metode 1: Dapatkan log SDK dari konsol alat pengembangan Anda

Metode ini berlaku untuk skenario di mana Anda dapat mereproduksi masalah secara lokal dan mengumpulkan log.

  1. Aktifkan pencatatan log dan atur tingkat log.

    // Logger ada di com.cicada.player.utils.
    // Aktifkan logging.
    Logger.getInstance(context).enableConsoleLog(true);
    // Atur tingkat log. Nilai default: AF_LOG_LEVEL_INFO. Untuk memecahkan masalah, Anda dapat mengatur tingkat ke AF_LOG_LEVEL_TRACE.
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_INFO);
  2. Atur pencatatan log tingkat frame.

    //Atur pencetakan log tingkat frame.
    //Nilai 0 untuk opsi menunjukkan fitur dinonaktifkan. Nilai 1 menunjukkan fitur diaktifkan.
    Logger.getInstance(this).setLogOption(Logger.LogOption.FRAME_LEVEL_LOGGING_ENABLED,value);
    Catatan

    Fitur pencatatan log tingkat frame terutama digunakan untuk memecahkan masalah.

  3. Kumpulkan log.

    Setelah Anda mereproduksi masalah, Anda dapat memperoleh log dari konsol alat pengembangan Anda, seperti Logcat.

Metode 2: Gunakan LogCallback untuk mendengarkan log keluaran SDK

Metode ini berlaku untuk skenario di mana masalah terjadi di sisi pengguna dan Anda tidak dapat mereproduksinya secara lokal untuk mengumpulkan log. Anda dapat menggunakan LogCallback untuk mendengarkan log keluaran SDK dan secara otomatis mengeluarkannya ke saluran log aplikasi Anda.

  1. Aktifkan pencatatan log dan atur tingkat log.

    // Logger ada di com.cicada.player.utils.
    // Atur tingkat log. Nilai default: AF_LOG_LEVEL_INFO. Untuk memecahkan masalah, Anda dapat mengatur tingkat ke AF_LOG_LEVEL_TRACE.
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_INFO);
    Logger.getInstance(mContext).setLogCallback(newLogger.OnLogCallback(){
            @Override
            public void onLog(Logger.LogLevel logLevel,Strings){
                // Log
            }
    });
  2. Kumpulkan log.

    Setelah Anda mereproduksi masalah, log secara otomatis dikeluarkan ke file log aplikasi Anda melalui saluran log aplikasi Anda.

Referensi