Topik ini menyediakan contoh penggunaan fitur lanjutan ApsaraVideo Player SDK untuk Android. Untuk informasi selengkapnya mengenai fitur yang didukung dan cara penggunaannya, lihat Referensi API.
Untuk menjalankan demo, unduh dan ikuti petunjuk di Jalankan Demo untuk mengompilasi dan menjalankannya.
Verifikasi Kompetensi Profesional
Beberapa fitur ApsaraVideo Player memerlukan lisensi Edisi Profesional. Untuk menggunakan fitur tersebut, Anda harus mendapatkan lisensi. Untuk informasi selengkapnya, lihat Fitur ApsaraVideo Player SDK dan Dapatkan lisensi untuk ApsaraVideo Player SDK.
Anda dapat mengatur listener saat aplikasi dimulai atau sebelum memanggil operasi API player apa pun.
import com.aliyun.private_service.PrivateService;
PrivateService.setOnPremiumLicenseVerifyCallback(new PrivateService.OnPremiumLicenseVerifyCallback() {
@Override
public void onPremiumLicenseVerifyCallback(PrivateService.PremiumBizType type, boolean isValid, String errorMsg) {
Log.d(TAG, "onPremiumLicenseVerifyCallback: " + type + " isValid: " + isValid + " errorMsg: " + errorMsg);
}
});PremiumBizType adalah enumerasi fitur Edisi Profesional. Saat Anda menggunakan fitur terkait, player memverifikasi lisensi dan mengembalikan hasil melalui callback ini. Jika isValid bernilai false, errorMsg berisi alasan kegagalan.
Pemutaran
Putar balik daftar
ApsaraVideo Player SDK untuk Android menyediakan fitur list playback komprehensif yang ideal untuk feed video pendek. Saat dikombinasikan dengan fitur seperti preloading, fitur ini secara signifikan meningkatkan kecepatan startup video pendek.
Untuk pengalaman list playback yang lebih baik, kami menyarankan Anda menggunakan solusi mini-series kami. Untuk informasi selengkapnya, lihat Pengembangan sisi klien untuk mini-series.
Mainkan video dengan transparansi
Deskripsi fitur
ApsaraVideo Player SDK mendukung rendering saluran alpha untuk mencapai efek dinamis pada animasi hadiah transparan. Dalam skenario seperti saluran langsung, memutar animasi hadiah transparan tanpa menghalangi konten langsung secara signifikan meningkatkan pengalaman menonton dan interaksi pengguna.
Batasan
Fitur rendering transparan tersedia di All-in-One SDK V6.8.0 dan versi lebih baru atau ApsaraVideo Player SDK V6.9.0 dan versi lebih baru.
Keunggulan
Menggunakan video MP4 dengan informasi transparansi untuk efek hadiah memberikan kualitas animasi yang lebih baik, ukuran file yang lebih kecil, kompatibilitas yang lebih tinggi, dan efisiensi pengembangan yang lebih besar. Hal ini memungkinkan efek hadiah ditampilkan lebih baik kepada pengguna, sehingga meningkatkan pengalaman pengguna.
Kualitas animasi yang lebih baik: Video MP4 dapat mempertahankan kualitas animasi asli, termasuk detail dan warna. Dibandingkan dengan format lain seperti APNG atau IXD, MP4 dapat lebih akurat mengembalikan efek animasi yang dibuat oleh desainer.
Ukuran file yang lebih kecil: File video MP4 dapat dikompresi lebih efektif daripada format lain seperti APNG atau IXD. Hal ini meningkatkan kecepatan pemuatan dan mengurangi konsumsi lebar pita jaringan.
Kompatibilitas yang lebih tinggi: MP4 adalah format video universal yang didukung secara luas di berbagai perangkat dan browser. Hal ini memastikan bahwa efek hadiah dapat diputar dan dilihat di perangkat utama.
Efisiensi pengembangan yang lebih tinggi: Solusi teknis untuk menggunakan video MP4 sebagai efek hadiah relatif sederhana. Developer tidak perlu meneliti dan mengimplementasikan logika parsing dan rendering yang kompleks. Hal ini memungkinkan developer fokus pada fitur lain dan meningkatkan efisiensi pengembangan.
Subtitle eksternal
Untuk contoh kode lengkap, lihat modul ExternalSubtitle di API-Example. Proyek ini adalah proyek contoh berbasis Java untuk ApsaraVideo Player SDK untuk Android guna membantu Anda mengintegrasikan fitur inti SDK dengan cepat.
ApsaraVideo Player SDK untuk Android mendukung penambahan dan pengalihan subtitle eksternal. SDK mendukung format subtitle SRT, SSA, ASS, dan VTT.
Kode berikut merupakan contohnya:
Buat view untuk menampilkan subtitle.
Anda dapat membuat view berbeda untuk format subtitle yang berbeda.
Saat Anda mengintegrasikan player V7.6.0 atau versi lebih baru dan menggunakan
VttSubtitleViewuntuk menampilkan subtitle SRT dan VTT, Anda harus mengatur listener berikut:// Wajib untuk player V7.6.0 dan versi lebih baru. mAliPlayer.setOnVideoSizeChangedListener(new IPlayer.OnVideoSizeChangedListener() { @Override public void onVideoSizeChanged(int width, int height) { int viewWidth = getWidth(); int viewHeight = getHeight(); IPlayer.ScaleMode mode = mVideoListPlayer.getScaleMode(); SubTitleBase.VideoDimensions videoDimensions = SubTitleBase.getVideoDimensionsWhenRenderChanged(width, height, viewWidth, viewHeight, mode); vttSubtitleView.setVideoRenderSize(videoDimensions.videoDisplayWidth, videoDimensions.videoDisplayHeight); } });Tambahkan subtitle.
PentingFile subtitle harus diatur di
onPrepared.mAliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() { @Override public void onPrepared() { // Atur subtitle (harus diatur di onPrepared). mAliPlayer.addExtSubtitle(EXT_SUBTITLE_URL); } });Atur listener terkait subtitle.
Pemutaran hanya audio
Anda dapat menonaktifkan pemutaran video untuk memutar hanya audio. Anda harus mengonfigurasi PlayerConfig sebelum mempersiapkan player.
PlayerConfig config = aliPlayer.getConfig();
config.mDisableVideo = true; // Aktifkan pemutaran hanya audio.
aliPlayer.setConfig(config);Beralih antara decoding software dan hardware
Metode decoding harus dialihkan sebelum pemutaran dimulai. Mengalihkan metode decoding selama pemutaran tidak berlaku.
ApsaraVideo Player SDK untuk Android menyediakan kemampuan decoding hardware untuk H.264 dan H.265. SDK juga menyediakan sakelar enableHardwareDecoder. Sakelar ini diaktifkan secara default. Jika inisialisasi decoding hardware gagal, player secara otomatis beralih ke decoding software untuk memastikan pemutaran video normal. Kode berikut merupakan contohnya:
// Aktifkan decoding hardware. Ini diaktifkan secara default.
aliPlayer.enableHardwareDecoder(true);Jika player secara otomatis beralih dari decoding hardware ke software, callback dipicu melalui onInfo. Kode berikut merupakan contohnya:
mApsaraPlayerActivity.setOnInfoListener(new IPlayer.OnInfoListener() {
@Override
public void onInfo(InfoBean infoBean) {
if (infoBean.getCode() == InfoCode.SwitchToSoftwareVideoDecoder) {
// Beralih ke decoding software.
}
}
});Pemutaran adaptif H.265
Jika model perangkat saat ini berada dalam blacklist H.265 berbasis cloud atau jika decoding hardware aliran H.265 gagal, fallback adaptif terjadi. Proses fallback adalah sebagai berikut: Jika aliran cadangan H.264 diatur, aliran cadangan tersebut diputar secara otomatis. Jika tidak ada aliran cadangan H.264 yang diatur, player secara otomatis fallback ke decoding software H.265.
Fitur ini hanya diaktifkan setelah Anda mengaktifkan layanan bernilai tambah untuk decoding adaptif yang dikombinasikan dengan kemampuan cloud dan klien. Anda harus mengirimkan tiket untuk mengajukan lisensi.
Layanan bernilai tambah untuk decoding adaptif yang dikombinasikan dengan kemampuan cloud dan klien terutama mencakup: 1. Pengiriman dinamis data kompatibilitas decoding hardware berbasis cloud. 2. Fallback adaptif dari aliran H.265 ke aliran H.264.
SDK masih dapat secara otomatis beralih ke decoding software saat decoding hardware gagal, bahkan jika layanan bernilai tambah tidak diaktifkan.
Kode berikut menunjukkan cara mengatur aliran cadangan:
// Lapisan aplikasi memelihara Map yang menyimpan semua pasangan kunci-nilai URL asli-URL cadangan. Saat beralih, URL cadangan ditanyakan di Map berdasarkan URL asli.
AliPlayerGlobalSettings.setAdaptiveDecoderGetBackupURLCallback(new AliPlayerGlobalSettings.OnGetBackupUrlCallback() {
@Override
public String getBackupUrlCallback(int oriBizScene, int oriCodecType, String original_url) {
String kurl = original_url;
if (!H265toH264Map.get(kurl).isEmpty()) {
return H265toH264Map.get(kurl);
} else {
return "";
}
}
});Secara adaptif beralih definisi video berdasarkan kondisi jaringan
Aliran video HLS multi-bitrate adaptif dapat dihasilkan menggunakan kelompok template transkoding pengemasan video di ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Konfigurasikan adaptive bitrate streaming untuk VOD.
Untuk aliran adaptif yang dihasilkan oleh transkoding di ApsaraVideo VOD, jika Anda menggunakan Vid untuk pemutaran, Anda harus mengatur daftar definisi pemutaran default ke
DEFINITION_AUTOuntuk mendapatkan dan memutar aliran video adaptif. Jika tidak, player memilih aliran video definisi rendah untuk pemutaran berdasarkan logika default. Untuk urutan pemutaran definisi default, lihat Jika video ditranskode menjadi beberapa definisi, definisi mana yang akan diputar oleh SDK player secara default?. Kode berikut menunjukkan cara menentukan daftar definisi untuk pemutaran VidAuth:VidAuth vidAuth = new VidAuth(); List<Definition> list = new ArrayList<>(); list.add(Definition.DEFINITION_AUTO); vidAuth.setDefinition(list);
ApsaraVideo Player SDK untuk Android mendukung adaptive bitrate streaming untuk aliran video HLS dan DASH. Setelah prepare berhasil, Anda dapat memanggil getMediaInfo untuk mendapatkan informasi tentang setiap aliran bitrate dalam objek TrackInfo. Kode berikut merupakan contohnya:
List<TrackInfo> trackInfos = aliPlayer.getMediaInfo().getTrackInfos();Selama pemutaran, Anda dapat memanggil metode selectTrack player untuk beralih aliran bitrate pemutaran. Atur nilainya ke AUTO_SELECT_INDEX untuk mengaktifkan adaptive bitrate streaming. Kode berikut merupakan contohnya:
int index = trackInfo.getIndex();
// Beralih bitrate.
aliPlayer.selectTrack(index);
// Beralih bitrate dan beradaptasi.
aliPlayer.selectTrack(TrackInfo.AUTO_SELECT_INDEX);Hasil peralihan dikembalikan dalam callback setelah Anda mengatur OnTrackChangedListener (sebelum memanggil selectTrack). Kode berikut merupakan contohnya:
aliPlayer.setOnTrackChangedListener(new IPlayer.OnTrackChangedListener() {
@Override
public void onChangedSuccess(TrackInfo trackInfo) {
// Berhasil beralih.
}
@Override
public void onChangedFail(TrackInfo trackInfo, ErrorInfo errorInfo) {
// Gagal beralih. Dapatkan alasan kegagalan dari errorInfo.getMsg().
}
});Opsional: Sebelum memanggil metode selectTrack player untuk beralih aliran pemutaran ke adaptive bitrate streaming, Anda dapat mengatur definisi maksimum untuk peralihan ABR (adaptive bitrate) dalam konfigurasi. Hal ini mencegah peralihan otomatis ke bitrate yang tidak diharapkan. Kode berikut merupakan contohnya: Agar pengaturan berlaku, kami menyarankan Anda memanggil kode ini sebelum player memanggil metode prepare atau list player memanggil metode moveTo.
PlayerConfig config = aliPlayer.getConfig();
config.mMaxAllowedAbrVideoPixelNumber = 921600; // Atur batas atas jumlah piksel untuk definisi ABR menjadi 921600 (lebar × tinggi = 1280 × 720), sehingga jumlah piksel definisi yang dapat dialihkan oleh ABR kurang dari atau sama dengan nilai ini.
aliPlayer.setConfig(config);Ambil snapshot
ApsaraVideo Player SDK untuk Android menyediakan fitur snapshot untuk mengambil snapshot video saat ini. Fitur ini diimplementasikan oleh operasi API snapshot. Fitur ini menangkap data mentah dan mengembalikannya sebagai bitmap. Antarmuka callback adalah OnSnapShotListener. Kode berikut merupakan contohnya:
// Atur callback snapshot.
aliPlayer.setOnSnapShotListener(new OnSnapShotListener(){
@Override
public void onSnapShot(Bitmap bm, int with, int height){
// Bitmap yang diperoleh dan lebar serta tinggi gambar.
}
});
// Ambil snapshot frame pemutaran saat ini.
aliPlayer.snapshot();Pratinjau
ApsaraVideo Player SDK untuk Android, bersama dengan konfigurasi ApsaraVideo VOD, mengimplementasikan fitur pratinjau. Fitur ini mendukung metode pemutaran VidSts dan VidAuth (direkomendasikan untuk ApsaraVideo VOD). Untuk informasi selengkapnya tentang cara mengonfigurasi dan menggunakan fitur pratinjau, lihat Pratinjau video.
Setelah mengonfigurasi fitur pratinjau, Anda dapat menggunakan metode VidPlayerConfigGen.setPreviewTime() untuk mengatur durasi pratinjau untuk player. Kode berikut menunjukkan contoh untuk pemutaran VidSts:
VidSts vidSts = new VidSts;
....
VidPlayerConfigGen configGen = new VidPlayerConfigGen();
configGen.setPreviewTime(20); // Pratinjau 20 detik
vidSts.setPlayConfig(configGen); // Atur untuk sumber pemutaran
...Saat durasi pratinjau diatur, server tidak mengembalikan konten video lengkap saat memutar video melalui ApsaraVideo Player SDK untuk Android. Sebaliknya, server hanya mengembalikan konten untuk durasi pratinjau yang ditentukan.
VidPlayerConfigGen mendukung pengaturan parameter permintaan yang didukung oleh server. Untuk informasi selengkapnya, lihat Parameter permintaan.
Fitur pratinjau saat ini tidak didukung untuk video format FLV dan MP3.
Atur blacklist
ApsaraVideo Player SDK untuk Android menyediakan mekanisme blacklist decoding hardware. Untuk perangkat yang tidak dapat menggunakan decoding hardware untuk pemutaran, Anda dapat langsung menggunakan decoding software untuk mencegah kesalahan. Kode berikut merupakan contohnya:
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.model="Lenovo K320t";
AliPlayerFactory.addBlackDevice(BlackType.HW_Decode_H264 ,deviceInfo );Blacklist secara otomatis dihapus setelah Anda keluar dari aplikasi.
Atur Referer
ApsaraVideo Player SDK untuk Android mendukung pengaturan Referer. Bersama dengan pengaturan Referer blacklist dan whitelist di konsol, hal ini memungkinkan Anda mengontrol izin akses. Anda dapat menggunakan metode PlayerConfig untuk mengatur Referer permintaan. Kode berikut menunjukkan contoh pengaturan SDK player:
// Pertama, dapatkan konfigurasi.
PlayerConfig config = aliPlayer.getConfig();
// Atur Referer. Contoh: http://example.aliyundoc.com. (Catatan: Saat mengatur Referer, Anda perlu menyertakan bagian protokol di awal.)
config.mReferrer = referrer;
....// Pengaturan lainnya
// Atur konfigurasi untuk player.
aliPlayer.setConfig(config);Atur User-Agent
ApsaraVideo Player SDK untuk Android memungkinkan Anda menggunakan PlayerConfig untuk mengatur User-Agent (UA) permintaan. Setelah diatur, player menyertakan informasi UA dalam permintaannya. Kode berikut merupakan contohnya:
// Pertama, dapatkan konfigurasi.
PlayerConfig config = aliPlayer.getConfig();
// Atur UA.
config.mUserAgent = "User-Agent yang akan diatur";
....// Pengaturan lainnya
// Atur konfigurasi untuk player.
aliPlayer.setConfig(config);Konfigurasikan waktu dan jumlah percobaan ulang jaringan
Anda dapat menggunakan kelas PlayerConfig untuk mengatur timeout jaringan dan jumlah percobaan ulang untuk ApsaraVideo Player SDK untuk Android. Kode berikut memberikan contohnya:
// Pertama, dapatkan konfigurasi.
PlayerConfig config = aliPlayer.getConfig();
// Atur timeout jaringan dalam milidetik.
config.mNetworkTimeout = 5000;
// Atur jumlah percobaan ulang saat timeout. Interval untuk setiap percobaan ulang adalah networkTimeout. networkRetryCount=0 berarti tidak ada percobaan ulang, dan kebijakan percobaan ulang ditentukan oleh aplikasi. Nilai default adalah 2.
config.mNetworkRetryCount=2;
....// Pengaturan lainnya
// Atur konfigurasi untuk player.
aliPlayer.setConfig(config);Jika Anda mengatur NetworkRetryCount dan masalah jaringan menyebabkan status loading, player mencoba ulang sebanyak NetworkRetryCount kali. Interval untuk setiap percobaan ulang adalah mNetworkTimeout.
Jika player masih dalam status loading setelah beberapa kali percobaan ulang, event
onErrordipanggil. Dalam kasus ini, ErrorInfo.getCode() mengembalikan ErrorCode.ERROR_LOADING_TIMEOUT.Jika NetworkRetryCount diatur ke 0 dan koneksi jaringan timeout, player memanggil event
onInfo. Untuk event ini, InfoBean.getCode() mengembalikan InfoCode.NetworkRetry. Pada titik ini, Anda dapat memanggil metodereloadplayer untuk memuat ulang jaringan atau melakukan pemrosesan lainnya.
Konfigurasikan cache dan kontrol latensi
ApsaraVideo Player SDK untuk Android menyediakan antarmuka untuk mengatur cache dan kontrol latensi melalui PlayerConfig. Kode berikut merupakan contohnya:
Atur header HTTP
Menggunakan metode PlayerConfig, Anda dapat menambahkan parameter header HTTP ke permintaan player. Kode berikut merupakan contohnya:
// Pertama, dapatkan konfigurasi.
PlayerConfig config = aliPlayer.getConfig();
// Definisikan header.
String[] headers = new String[1];
headers[0]="Host:example.com"; // Misalnya, untuk mengatur Host di header.
// Atur header.
config.setCustomHeaders(headers);
....// Pengaturan lainnya
// Atur konfigurasi untuk player.
aliPlayer.setConfig(config);Gambar-dalam-Gambar (PiP)
Untuk contoh kode lengkap, lihat modul PictureInPicture di API-Example. Proyek ini adalah proyek contoh berbasis Java untuk ApsaraVideo Player SDK untuk Android guna membantu Anda mengintegrasikan fitur inti SDK dengan cepat.
Prosedurnya adalah sebagai berikut:
Dalam file
AndroidManifest.xml, deklarasikan izin PiP.<activity android:name=".PictureInPictureActivity" android:exported="true" android:supportsPictureInPicture="true" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" />Alihkan
Activitytarget ke mode PiP.Rational aspectRatio = new Rational(16, 9); // Rasio aspek jendela PiP, yang dapat disesuaikan sesuai kebutuhan. PictureInPictureParams.Builder pipBuilder = new PictureInPictureParams.Builder(); pipBuilder.setAspectRatio(aspectRatio); enterPictureInPictureMode(pipBuilder.build());Anda dapat memilih untuk memicu mode PiP dari event OnClick, saat meninggalkan aplikasi, atau saat kembali ke aplikasi. Metode implementasinya adalah sebagai berikut:
Dipicu oleh OnClick
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Rational aspectRatio = new Rational(16, 9); // Rasio aspek jendela PiP. PictureInPictureParams.Builder pipBuilder = new PictureInPictureParams.Builder(); pipBuilder.setAspectRatio(aspectRatio); enterPictureInPictureMode(pipBuilder.build()); } });Dipicu saat meninggalkan aplikasi
@Override protected void onUserLeaveHint() { super.onUserLeaveHint(); Rational aspectRatio = new Rational(16, 9); // Rasio aspek jendela PiP. PictureInPictureParams.Builder pipBuilder = new PictureInPictureParams.Builder(); pipBuilder.setAspectRatio(aspectRatio); enterPictureInPictureMode(pipBuilder.build()); Log.e(TAG, "PiP onUserLeaveHint"); }Dipicu saat kembali ke aplikasi
@Override public void onBackPressed() { super.onBackPressed(); // Dipicu dari tombol kembali. enterPictureInPictureMode(); }Tangani UI untuk menampilkan dan menyembunyikan jendela PiP.
@Override public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) { super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig); if (isInPictureInPictureMode) { // Penanganan saat memasuki mode PiP. // sembunyikan UI Log.e(TAG, "Memasuki mode PiP"); } else { // Penanganan saat keluar dari mode PiP. // tampilkan UI Log.e(TAG, "Keluar dari mode PiP"); } }
Fallback RTS langsung
Untuk contoh kode lengkap, lihat modul RtsLiveStream di API-Example. Proyek ini adalah proyek contoh berbasis Java untuk ApsaraVideo Player SDK untuk Android guna membantu Anda mengintegrasikan fitur inti SDK dengan cepat.
Untuk informasi selengkapnya, lihat Streaming langsung RTS.
Beralih antara saluran suara kiri dan kanan
ApsaraVideo Player SDK untuk Android menggunakan metode setOutputAudioChannel untuk mengatur saluran suara output. Jika sumber input adalah dual-channel, Anda dapat menggunakan metode berikut untuk beralih ke saluran kiri atau kanan. Jika sumber input adalah single-channel, pengaturan ini tidak berpengaruh.
Pengaturan saluran suara output memengaruhi rendering audio dan callback data PCM.
/*
OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_LEFT: Beralih ke saluran kiri untuk pemutaran.
OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_RIGHT: Beralih ke saluran kanan untuk pemutaran.
OutputAudioChannel.OUTPUT_AUDIO_CHANNEL_NONE: Jangan beralih saluran, pertahankan saluran sumber input untuk pemutaran.
*/
aliPlayer.setOutputAudioChannel();Parsing aliran audio
Anda dapat mengatur listener untuk mendapatkan data aliran audio dan video. Audio dan video tidak boleh berupa aliran terenkripsi karena aliran terenkripsi tidak dapat diparse.
Atur warna latar belakang video
ApsaraVideo Player SDK untuk Android mendukung pengaturan warna latar belakang untuk rendering player. Operasi API dan petunjuk penggunaannya adalah sebagai berikut:
Contoh operasi API
/**
* Mengatur warna latar belakang video.
* @param color ARGB
*/
abstract public void setVideoBackgroundColor(int color);Petunjuk penggunaan
// Parameter adalah data heksadesimal 8-bit. 8 bit dikelompokkan berpasangan, mewakili A (transparansi alpha), R (merah), G (hijau), dan B (biru) secara berurutan.
// Misalnya, 0x0000ff00 merepresentasikan hijau.
aliPlayer.setVideoBackgroundColor(0x0000ff00);Tentukan nama domain pemutaran untuk VidAuth
Anda dapat menggunakan metode VidAuth untuk menentukan bidang seperti nama domain yang sesuai dengan VID. Untuk informasi selengkapnya tentang bidang yang didukung, lihat Parameter permintaan GetPlayInfo. Operasi API dan petunjuk penggunaannya adalah sebagai berikut:
Contoh operasi API
/**
* Mengatur parameter pemutaran.
*
* @param playConfig Parameter pemutaran.
*/
public void setPlayConfig(VidPlayerConfigGen playConfig);Petunjuk penggunaan
Anda dapat menggunakan metode addPlayerConfig antarmuka VidPlayerConfigGen untuk menambahkan bidang playDomain.
vidAuth = new VidAuth();
VidPlayerConfigGen configGen = new VidPlayerConfigGen();
// Tambahkan bidang playDomain. Untuk informasi selengkapnya tentang bidang yang dapat ditambahkan, lihat
// https://www.alibabacloud.com/help/en/vod/developer-reference/api-vod-2017-03-21-getplayinfo
configGen.addPlayerConfig("playDomain", "com.xxx.xxx");
vidAuth.setPlayConfig(configGen);Plugin decoding H.266
H.266 (VVC/Versatile Video Coding) adalah standar encoding video generasi berikutnya yang secara signifikan menghemat bitrate sambil mempertahankan kualitas gambar yang sama. Untuk mengoptimalkan performa dan mengontrol ukuran SDK utama, kemampuan decoding bernilai tambah H.266 dikemas secara independen sebagai plugin, yang mendukung integrasi sesuai permintaan.
Prasyarat
ApsaraVideo Player SDK atau All-in-One SDK adalah V7.6.0 atau versi lebih baru.
Lisensi Edisi Profesional telah diperoleh. Untuk informasi selengkapnya, lihat Dapatkan lisensi untuk ApsaraVideo Player SDK.
ApsaraVideo Player dengan plugin decoding H.266 hanya mendukung pemutaran video H.266 yang ditranskode oleh Transcoding Alibaba Cloud.
Integrasikan plugin
Aktifkan plugin
Mulai dari ApsaraVideo Player SDK V7.7.0 untuk Android, plugin diaktifkan secara default setelah integrasi dan tidak perlu diaktifkan secara manual.
AliPlayerGlobalSettings.enableCodecPlugin("vvc", true);Kode kesalahan terkait
Untuk kode kesalahan terkait plugin decoding H.266, lihat FAQ umum untuk player di berbagai klien.
Segarkan otomatis sumber pemutaran
Mengaktifkan fitur penyegaran otomatis sumber pemutaran mencegah gangguan pemutaran yang disebabkan oleh kedaluwarsa autentikasi. Fitur ini memicu listener saat sumber menjadi tidak valid dan mendapatkan alamat pemutaran baru, yang memastikan pemutaran video berkelanjutan dan lancar.
Prasyarat
ApsaraVideo Player SDK atau All-in-One SDK adalah V7.9.0 atau versi lebih baru.
Anda menggunakan sumber VidAuth untuk pemutaran atau bisnis Anda telah mengonfigurasi penandatanganan URL.
Sumber VidAuth
Contoh operasi API
/**
* Mengatur listener untuk event kedaluwarsa sumber VidAuth.
*
* Fitur ini memungkinkan penyegaran otomatis sumber VidAuth untuk menghindari gangguan pemutaran
* yang disebabkan oleh kedaluwarsa. Saat listener dipicu, Anda dapat menyegarkan sumber VidAuth
* dan mengembalikan VidAuth yang diperbarui menggunakan {@link SourceRefreshCallback#onSuccess}.
*
* @param listener Antarmuka untuk mendengarkan event kedaluwarsa sumber VidAuth. Lihat {@link OnVidAuthExpiredListener}.
*
*/
abstract public void setOnVidAuthExpiredListener(OnVidAuthExpiredListener listener);Komponen fitur
UrlSource sumber
Contoh operasi API
/**
* Mengatur listener untuk event kedaluwarsa sumber URL.
*
* Fitur ini memungkinkan penyegaran URL untuk menghindari gangguan pemutaran yang disebabkan oleh
* kedaluwarsa URL karena autentikasi. Saat listener dipicu,
* Anda dapat menyegarkan sumber URL dan mengembalikan sumber URL yang diperbarui menggunakan {@link SourceRefreshCallback#onSuccess}.
*
* @param listener Listener untuk menangani event kedaluwarsa sumber URL. Lihat {@link OnURLSourceExpiredListener}.
*
* <p>Untuk informasi selengkapnya tentang mengonfigurasi autentikasi URL, lihat
* <a href="https://www.alibabacloud.com/help/id/vod/user-guide/configure-url-signing">dokumentasi autentikasi URL</a>.</p>
*/
abstract public void setOnURLSourceExpiredListener(OnURLSourceExpiredListener listener);Komponen fitur
Fungsi utilitas tambahan
Contoh berikut menggunakan penandatanganan Jenis A.
Performa
Atur skenario pemutaran
Mengatur skenario pemutaran secara otomatis mengonfigurasi parameter optimal (termasuk pengaturan buffer, sakelar fitur, dll.) untuk skenario tersebut. Fitur ini juga kompatibel dengan pengaturan parameter kustom yang dibuat melalui antarmuka setConfig (pengaturan kustom memiliki prioritas lebih tinggi).
Setelah mengatur skenario pemutaran, Anda dapat menggunakan antarmuka
getConfiguntuk melihat konfigurasi parameter.
Contoh operasi API
/**
* Mengatur skenario player.
*
* @param scene Skenario.
*/
abstract public void setPlayerScene(PlayerScene scene);Skenario pemutaran
public enum PlayerScene {
/**
* Tidak ada skenario.
*/
NONE,
/**
* Skenario video panjang: berlaku untuk video lebih dari 30 menit.
*/
LONG,
/**
* Skenario video menengah: berlaku untuk video antara 5 hingga 30 menit.
*/
MEDIUM,
/**
* Skenario video pendek: berlaku untuk video antara 0 detik hingga 5 menit.
*/
SHORT,
/**
* Skenario streaming langsung.
*/
LIVE,
/**
* Skenario langsung RTS.
*/
RTS_LIVE
}Petunjuk penggunaan
// Atur skenario video pendek.
aliPlayer.setPlayerScene(PlayerScene.SHORT)
// Atur skenario video menengah.
aliPlayer.setPlayerScene(PlayerScene.MEDIUM)
// Atur skenario video panjang.
aliPlayer.setPlayerScene(PlayerScene.LONG)
// Atur skenario streaming langsung.
aliPlayer.setPlayerScene(PlayerScene.LIVE)Pre-rendering
ApsaraVideo Player SDK untuk Android mendukung rendering frame pertama dengan cepat sebelum pemutaran dimulai, yang dapat meningkatkan kecepatan startup.
Fitur ini dinonaktifkan secara default.
Mengaktifkan fitur ini memengaruhi urutan pemicu callback keberhasilan persiapan dan rendering frame pertama. Saat dinonaktifkan, callback keberhasilan persiapan dipicu sebelum callback rendering frame pertama. Saat diaktifkan, callback rendering frame pertama mungkin dipicu sebelum callback keberhasilan persiapan karena perbedaan kecepatan decoding dan rendering, tetapi hal ini tidak memengaruhi pemutaran.
Kode berikut merupakan contohnya:
aliPlayer.setOption(ALLOW_PRE_RENDER, 1);Cache lokal
Untuk contoh kode lengkap, lihat modul Preload di API-Example. Proyek ini adalah proyek contoh berbasis Java untuk ApsaraVideo Player SDK untuk Android guna membantu Anda mengintegrasikan fitur inti SDK dengan cepat.
ApsaraVideo Player SDK untuk Android menyediakan fitur cache lokal. Fitur ini meningkatkan kecepatan startup, kecepatan pencarian, dan mengurangi tersendat saat pengguna memutar ulang video, sekaligus menghemat trafik.
Enable local cache
Fitur cache lokal dinonaktifkan secara default. Untuk menggunakannya, Anda harus mengaktifkannya secara manual. Fitur ini dikontrol oleh enableLocalCache di AliPlayerGlobalSettings. Kode berikut merupakan contohnya:
Jika URL pemutaran video memiliki parameter autentikasi, parameter autentikasi berubah selama caching lokal dan pemutaran. Untuk meningkatkan rasio hit cache untuk URL yang sama dengan autentikasi berbeda, Anda dapat menghapus parameter autentikasi dari URL sebelum menghitung nilai hash (misalnya, MD5) melalui antarmuka
setCacheUrlHashCallback. Misalnya, jika URL pemutaran video dengan parameter autentikasi adalahhttp://****.mp4?aaa, gunakanhttp://****.mp4untuk menghitung nilai hash saat memuat. Namun, jika video tersebut adalah video m3u8 terenkripsi dan keyURL-nya diproses dengan menghapus parameter autentikasi sebelum menghitung nilai hash, cache video berbeda mungkin mengenai kunci yang sama, yang menyebabkan kegagalan pemutaran. Solusi: Dalam callbacksetCacheUrlHashCallback, Anda dapat melakukan pemeriksaan nama domain dan hanya menghapus parameter autentikasi untuk domain pemutaran (http(s)://xxxxx.m3u8?aaaa), dan tidak menghapusnya untuk domain yang sesuai dengan keyURL (http(s)://yyyyy?bbbb).
Jika server mendukung protokol HTTP dan HTTPS, tetapi protokol berbeda mengarah ke file media yang sama, Anda dapat menghapus atau menyatukan header permintaan sebelum menghitung nilai hash. Misalnya:
Jika URL pemutaran video adalah
https://****.mp4danhttp://****.mp4, gunakan****.mp4untuk menghitung nilai hash saat memuat.Jika URL pemutaran video adalah
https://****.mp4, satukan menjadihttp://****.mp4sebelum menghitung nilai hash.
Untuk versi SDK player 5.5.4.0 dan versi lebih baru, jika URL pemutaran video memiliki parameter autentikasi dan protokol pemutaran adalah HLS, Anda dapat mengatur bidang
PlayerConfig.mEnableStrictAuthModeuntuk memilih mode autentikasi berbeda (nilai default adalah false untuk versi 5.5.4.0 hingga 6.21.0. Nilai default adalah true untuk versi 7.0.0 dan versi lebih baru):Autentikasi non-ketat (false): Autentikasi juga di-cache. Jika hanya sebagian media yang di-cache terakhir kali, player menggunakan autentikasi yang di-cache untuk membuat permintaan saat memutar bagian yang tidak di-cache berikutnya. Jika periode validitas autentikasi URL sangat singkat, hal ini menyebabkan pengecualian pemutaran.
Autentikasi ketat (true): Autentikasi tidak di-cache. Autentikasi dilakukan setiap kali pemutaran dimulai. Hal ini menyebabkan pemutaran gagal tanpa koneksi jaringan.
Enable or disable local cache for a single URL
Jika Anda ingin mengaktifkan atau menonaktifkan fitur cache lokal untuk URL tunggal, Anda dapat mengaturnya di konfigurasi player.
// Pertama, dapatkan konfigurasi.
PlayerConfig config = aliPlayer.getConfig();
// Apakah akan mengaktifkan cache lokal untuk URL pemutaran. Nilai default adalah true. Saat cache lokal di AliPlayerGlobalSettings diaktifkan, dan cache lokal di sini juga diaktifkan (diatur ke true), cache lokal untuk URL ini akan berlaku. Jika diatur ke false di sini, cache lokal untuk URL ini dinonaktifkan.
config.mEnableLocalCache = false;
....// Pengaturan lainnya
// Atur konfigurasi untuk player.
aliPlayer.setConfig(config);Preload
ApsaraVideo Player SDK untuk Android menyediakan fitur preload, yang merupakan peningkatan dari fitur cache lokal. Dengan mengatur ukuran memori untuk caching video, Anda dapat lebih lanjut meningkatkan kecepatan startup video.
Batasan fitur preload adalah sebagai berikut:
Saat ini mendukung pemuatan file media tunggal seperti MP4, MP3, FLV, dan HLS.
ApsaraVideo Player SDK untuk Android menyediakan kemampuan penjadwalan sumber daya jaringan otomatis untuk preload secara default. Hal ini mengurangi dampak permintaan jaringan preload terhadap permintaan jaringan video yang sedang diputar. Kebijakan penjadwalan otomatis bekerja sebagai berikut: preload hanya diizinkan membuat permintaan setelah buffer video yang sedang diputar mencapai ambang batas tertentu. Untuk mengontrol permintaan real-time untuk preload sendiri, Anda dapat menonaktifkan kebijakan ini menggunakan metode berikut:
AliPlayerGlobalSettings.enableNetworkBalance(false);Aktifkan fitur cache lokal. Untuk informasi selengkapnya, lihat Cache lokal.
Atur sumber data.
VidAuth (disarankan)
VidAuth vidAuth = new VidAuth(); vidAuth.setVid("Informasi Vid"); // Wajib. ID video (VideoId). vidAuth.setPlayAuth("<yourPlayAuth>"); // Wajib. Kredensial pemutaran, yang perlu dihasilkan dengan memanggil operasi API GetVideoPlayAuth ApsaraVideo VOD. vidAuth.setRegion("Wilayah akses"); // Untuk SDK player V5.5.5.0 dan versi lebih baru, parameter ini ditinggalkan. Anda tidak perlu mengatur wilayah, karena player akan menguraikannya secara otomatis. Untuk versi SDK player sebelum 5.5.5.0, parameter ini wajib. Ini adalah wilayah akses ApsaraVideo VOD, yang default-nya cn-shanghai. vidAuth.setQuality("Definisi yang dipilih") // "AUTO" merepresentasikan bitrate adaptif.VidSts
VidSts vidSts = new VidSts(); vidSts.setVid("Informasi Vid"); // Wajib. ID video (VideoId). vidSts.setAccessKeyId("<yourAccessKeyId>"); // Wajib. ID AccessKey token STS sementara, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. vidSts.setAccessKeySecret("<yourAccessKeySecret>"); // Wajib. Rahasia AccessKey token STS sementara, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. vidSts.setSecurityToken("<yourSecurityToken>"); // Wajib. Token keamanan STS, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. vidSts.setRegion("Wilayah akses"); // Wajib. Wilayah akses ApsaraVideo VOD, yang default-nya cn-shanghai. vidSts.setQuality("Definisi yang dipilih") // "AUTO" merepresentasikan bitrate adaptif.UrlSource
UrlSource urlSource = new UrlSource(); urlSource.setUri("URL Pemutaran"); // Wajib. URL pemutaran, yang dapat berupa URL VOD pihak ketiga atau URL pemutaran di ApsaraVideo VOD.Atur parameter tugas.
CatatanIni hanya berlaku untuk video multi-bitrate. Anda dapat memilih salah satu dari
setDefaultBandWidth,setDefaultResolution, atausetDefaultQuality.PreloadConfig preloadConfig = new PreloadConfig(); // Atur bitrate preload untuk aliran multi-bitrate. preloadConfig.setDefaultBandWidth(400000); // Atur resolusi preload untuk aliran multi-bitrate. preloadConfig.setDefaultResolution(640 * 480); // Atur kualitas preload untuk aliran multi-bitrate. preloadConfig.setDefaultQuality(“FD”); // Atur durasi preload. preloadConfig.setDuration(1000);Tambahkan listener tugas.
Buat tugas dan tambahkan ke instance
MediaLoaderV2untuk memulai preloading.VidAuth (disarankan)
// Buat tugas preload. PreloadTask mPreloadTask = new PreloadTask(vidAuth, preloadConfig); // Dapatkan instance MediaLoaderV2. MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // Tambahkan tugas dan mulai preloading. String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl)VidSts
// Buat tugas preload. PreloadTask mPreloadTask = new PreloadTask(vidSts, preloadConfig); // Dapatkan instance MediaLoaderV2. MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // Tambahkan tugas dan mulai preloading. String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl);UrlSource
// Buat tugas preload. PreloadTask mPreloadTask = new PreloadTask(urlSource, preloadConfig); // Dapatkan instance MediaLoaderV2. MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // Tambahkan tugas dan mulai preloading. String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl)Opsional: Kelola tugas.
mediaLoaderV2.cancelTask(taskId); // Batalkan tugas preload dengan ID tugas tertentu. mediaLoaderV2.pauseTask(taskId); // Jeda tugas preload dengan ID tugas tertentu. mediaLoaderV2.resumeTask(taskId); // Lanjutkan tugas preload dengan ID tugas tertentu.Opsional: Hapus file yang dimuat.
Anda dapat menghapus file yang dimuat sesuai kebutuhan untuk menghemat ruang. ApsaraVideo Player SDK untuk Android tidak menyediakan antarmuka penghapusan. Anda perlu menghapus file di direktori pemuatan aplikasi.
Preload dinamis
Strategi preload dinamis memungkinkan integrator mengontrol cache video yang sedang diputar dan jumlah serta cache item yang dipre-load. Hal ini membantu bisnis menyeimbangkan pengalaman pemutaran dengan biaya.
Preload video HLS multi-bitrate
Dalam skenario pemutaran video HLS multi-bitrate listPlayer, integrator dapat mempre-load aliran dengan definisi yang sama dengan video yang sedang diputar. Mereka juga dapat memilih mode preload berdasarkan kebutuhan bisnis mereka.
Dapatkan kecepatan unduhan
Anda dapat memperoleh kecepatan unduhan video yang sedang diputar dalam callback onInfo. Hal ini dilakukan menggunakan operasi API getExtraValue. Kode berikut merupakan contohnya:
aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
@Override
public void onInfo(InfoBean infoBean) {
if(infoBean.getCode() == InfoCode.CurrentDownloadSpeed){
// Kecepatan unduhan saat ini.
long extraValue = infoBean.getExtraValue();
}
}
});Fitur jaringan
HTTPDNS
HTTPDNS mengirim permintaan resolusi nama domain ke server HTTPDNS tertentu untuk mendapatkan hasil resolusi nama domain yang lebih cepat dan stabil, yang mengurangi risiko pembajakan DNS.
ApsaraVideo Player SDK menyediakan fitur HTTPDNS yang ditingkatkan yang menawarkan layanan HTTPDNS khusus untuk nama domain CDN Alibaba Cloud. Fitur ini mendukung penjadwalan presisi dan resolusi real-time untuk jaringan CDN Alibaba Cloud, yang secara efektif meningkatkan performa jaringan.
Contoh HTTPDNS yang ditingkatkan
HTTPDNS yang ditingkatkan hanya menyediakan layanan HTTPDNS untuk nama domain CDN Alibaba Cloud. Pastikan nama domain yang Anda konfigurasikan adalah nama domain CDN Alibaba Cloud dan konfigurasi nama domain lengkap serta siap digunakan. Untuk informasi selengkapnya tentang cara menambahkan dan mengonfigurasi nama domain CDN di ApsaraVideo VOD, lihat Tambahkan nama domain yang dipercepat. Untuk informasi selengkapnya tentang nama domain CDN, lihat CDN Alibaba Cloud.
// Aktifkan HTTPDNS yang ditingkatkan.
AliPlayerGlobalSettings.enableEnhancedHttpDns(true);
// Opsional: Tambahkan nama domain untuk pra-resolusi HTTPDNS.
DomainProcessor.getInstance().addPreResolveDomain("player.***alicdn.com");HTTP/2
ApsaraVideo Player SDK untuk Android telah mengaktifkan HTTP/2 secara default sejak versi 5.5.0.0.
ApsaraVideo Player SDK untuk Android mendukung penggunaan protokol HTTP/2. Protokol ini meningkatkan performa pemutaran melalui multiplexing, yang menghindari head-of-line blocking. Kode berikut merupakan contohnya:
AliPlayerGlobalSettings.setUseHttp2(true);Pra-buat koneksi TCP untuk HTTP
Untuk permintaan pemutaran video HTTP (bukan HTTPS), pra-membuat koneksi TCP secara signifikan dapat meningkatkan pengalaman pengguna, mengurangi waktu koneksi jaringan, memastikan pemutaran segera dan berkelanjutan, serta mengoptimalkan penggunaan sumber daya jaringan dan sistem. Penggunaannya adalah sebagai berikut:
// Format domain adalah host[:port], di mana port bersifat opsional. Gunakan titik koma (;) untuk memisahkan beberapa nama domain.
// Pengaturan global
// Antarmuka lengkap menggunakan string saat ini sebagai standar untuk setiap pengaturan (lebih - tambah, kurang - hapus). String kosong menghentikan pra-koneksi.
AliPlayerGlobalSettings.setOption(AliPlayerGlobalSettings.SET_PRE_CONNECT_DOMAIN, "domain1;domain2");Unduhan video
Untuk contoh kode lengkap, lihat modul Download di API-Example. Proyek ini adalah proyek contoh berbasis Java untuk ApsaraVideo Player SDK untuk Android guna membantu Anda mengintegrasikan fitur inti SDK dengan cepat.
ApsaraVideo Player SDK untuk Android menyediakan fitur unduhan video untuk ApsaraVideo VOD. Fitur ini memungkinkan pengguna menyimpan video secara lokal untuk ditonton offline menggunakan ApsaraVideo Player. Fitur ini juga menawarkan dua metode unduhan: unduhan normal dan unduhan aman.
Unduhan normal
Data video yang diunduh tidak dienkripsi oleh Alibaba Cloud. Pengguna dapat memutarnya dengan player pihak ketiga.
Unduhan aman
Data video yang diunduh dienkripsi oleh Alibaba Cloud. Player pihak ketiga tidak dapat memutarnya. Video hanya dapat diputar menggunakan ApsaraVideo Player.
Petunjuk
Fitur unduhan video hanya didukung untuk metode VidSts dan VidAuth.
Untuk menggunakan fitur unduhan video player, Anda perlu mengaktifkan dan mengonfigurasi mode unduhan di konsol ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Unduhan offline.
Unduhan video mendukung unduhan yang dapat dilanjutkan.
Prosedur
Opsional: Konfigurasikan file enkripsi untuk unduhan aman. Ini hanya diperlukan untuk unduhan aman, bukan untuk unduhan normal.
CatatanPastikan file enkripsi yang dikonfigurasi konsisten dengan informasi aplikasi. Jika tidak, unduhan video gagal.
Jika Anda mengatur metode unduhan ke unduhan aman, Anda perlu mengonfigurasi SDK player dengan file kunci yang dihasilkan di konsol ApsaraVideo VOD. File ini digunakan untuk dekripsi dan verifikasi selama unduhan dan pemutaran video. Untuk informasi selengkapnya tentang cara menghasilkan file kunci, lihat Aktifkan unduhan aman.
Kami menyarankan Anda mengonfigurasi ini sekali di kelas Application. Kode berikut merupakan contohnya:
// Kami menyarankan menyimpan file encryptedApp.dat di ponsel dan kemudian mengatur jalur file lokal file enkripsi di sini. PrivateService.initService(getApplicationContext(), "Jalur file tempat encryptedApp.dat berada");Buat dan siapkan downloader.
Anda dapat membuat downloader menggunakan AliDownloaderFactory. Kode berikut merupakan contohnya:
AliMediaDownloader mAliDownloader = null; ...... // Buat downloader. mAliDownloader = AliDownloaderFactory.create(getApplicationContext()); // Konfigurasikan jalur penyimpanan untuk unduhan. mAliDownloader.setSaveDir("Alamat folder penyimpanan");Atur listener.
Downloader menyediakan beberapa listener event. Kode berikut merupakan contohnya:
Siapkan sumber unduhan.
Anda dapat menggunakan metode
prepareuntuk menyiapkan sumber unduhan. Sumber unduhan mendukung metode VidSts dan VidAuth. Kode berikut merupakan contohnya:VidSts
// Buat VidSts. VidSts aliyunVidSts = new VidSts(); aliyunVidSts.setVid("Informasi Vid"); // ID video (VideoId). aliyunVidSts.setAccessKeyId("<yourAccessKeyId>"); // ID AccessKey token STS sementara, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. aliyunVidSts.setAccessKeySecret("<yourAccessKeySecret>"); // Rahasia AccessKey token STS sementara, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. aliyunVidSts.setSecurityToken("<yourSecurityToken>"); // Token keamanan STS, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. aliyunVidSts.setRegion("Wilayah akses"); // Wilayah akses ApsaraVideo VOD, yang default-nya cn-shanghai. // Jika Anda telah mengaktifkan pass-through parameter enkripsi standar HLS di konsol VOD, dan nama parameter default adalah MtsHlsUriToken, Anda perlu mengatur config dan meneruskannya ke vid, seperti yang ditunjukkan di bawah. // Jika Anda belum mengaktifkan pass-through parameter enkripsi standar HLS di konsol VOD, Anda tidak perlu mengintegrasikan kode berikut. VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); aliyunVidSts.setPlayerConfig(config); // Siapkan sumber unduhan. mAliDownloader.prepare(aliyunVidSts)VidAuth
// Buat VidAuth. VidAuth vidAuth = new VidAuth(); vidAuth.setVid("Informasi Vid"); // ID video (VideoId). vidAuth.setPlayAuth("<yourPlayAuth>"); // Kredensial pemutaran, yang perlu dihasilkan dengan memanggil operasi API GetVideoPlayAuth ApsaraVideo VOD. vidAuth.setRegion("Wilayah akses"); // Untuk SDK player V5.5.5.0 dan versi lebih baru, parameter ini ditinggalkan. Anda tidak perlu mengatur wilayah, karena player akan menguraikannya secara otomatis. Untuk versi SDK player sebelum 5.5.5.0, parameter ini wajib. Ini adalah wilayah akses ApsaraVideo VOD, yang default-nya cn-shanghai. // Jika Anda telah mengaktifkan pass-through parameter enkripsi standar HLS di konsol VOD, dan nama parameter default adalah MtsHlsUriToken, Anda perlu mengatur config dan meneruskannya ke vid, seperti yang ditunjukkan di bawah. VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); vidAuth.setPlayerConfig(config); // Siapkan sumber unduhan. mAliDownloader.prepare(vidAuth);
CatatanFormat file sumber dan format file unduhan output sama dan tidak dapat diubah.
Jika Anda mengaktifkan pass-through parameter enkripsi standar HLS di konsol VOD, nama parameter default adalah MtsHIsUriToken. Untuk informasi selengkapnya, lihat Pass-through parameter enkripsi standar HLS. Dalam kasus ini, Anda harus mengatur nilai MtsHIsUriToken dalam sumber VOD seperti yang ditunjukkan dalam kode di atas.
Setelah persiapan berhasil, pilih item unduhan dan mulai unduhan.
Setelah persiapan berhasil, metode
OnPreparedListenerdipanggil kembali. Objek TrackInfo yang dikembalikan berisi informasi seperti definisi setiap aliran video. Anda dapat memilih Track untuk diunduh. Kode berikut merupakan contohnya:public void onPrepared(MediaInfo mediaInfo) { // Berhasil menyiapkan item unduhan. List<TrackInfo> trackInfos = mediaInfo.getTrackInfos(); // Misalnya, unduh TrackInfo pertama. mAliDownloader.selectItem(trackInfos.get(0).getIndex()); // Mulai unduhan. mAliDownloader.start(); }(Opsional) Perbarui sumber unduhan.
Untuk mencegah VidSts dan VidAuth kedaluwarsa, Anda juga dapat memperbarui informasi sumber unduhan sebelum memulai unduhan. Kode berikut merupakan contohnya:
// Perbarui sumber unduhan. mAliDownloader.updateSource(VidSts); // Mulai unduhan. mAliDownloader.start();Setelah unduhan berhasil atau gagal, lepaskan downloader.
Setelah unduhan selesai, Anda dapat memanggil
releasedalam callbackonCompletionatauonErroruntuk melepaskan downloader. Kode berikut merupakan contohnya:mAliDownloader.stop(); mAliDownloader.release();Opsional: Hapus file yang diunduh.
Selama atau setelah unduhan, Anda dapat menghapus file yang diunduh. Kode berikut merupakan contohnya:
// Hapus file melalui objek. mAliDownloader.deleteFile(); // Hapus melalui metode statis. Jika berhasil, mengembalikan 0. AliDownloaderFactory.deleteFile("Jalur folder unduhan yang akan dihapus", "ID Video", "Format Video", "Indeks video yang diunduh");
Langkah selanjutnya
Video yang diunduh dapat diputar menggunakan ApsaraVideo Player. Metodenya adalah sebagai berikut:
Setelah unduhan selesai, dapatkan jalur mutlak file video.
String path = mAliDownloader.getFilePath();Atur jalur absolut untuk pemutaran menggunakan metode UrlSource.
UrlSource urlSource = new UrlSource(); urlSource.setUri("URL Pemutaran"); // Atur jalur absolut video yang diunduh. aliPlayer.setDataSource(urlSource);
Pemutaran video terenkripsi
ApsaraVideo VOD mendukung enkripsi HLS, kriptografi privat Alibaba Cloud, dan enkripsi DRM. Streaming langsung hanya mendukung enkripsi DRM. Untuk informasi selengkapnya tentang pemutaran terenkripsi, lihat Pemutaran video terenkripsi.
Pemutaran RTS native
ApsaraVideo Player SDK untuk Android mengintegrasikan Native RTS SDK untuk mengimplementasikan fitur streaming langsung latensi rendah native. Untuk informasi selengkapnya, lihat Implementasikan penarikan aliran RTS di Android.