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.
Tetapkan listener saat aplikasi dimulai atau sebelum memanggil operasi API pemutar 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
Pemutaran 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, meningkatkan pengalaman pengguna.
Kualitas animasi yang lebih baik: Video MP4 mempertahankan kualitas animasi asli, termasuk detail dan warna. Dibandingkan dengan format lain seperti APNG atau IXD, MP4 lebih akurat mengembalikan efek animasi yang dibuat desainer.
Ukuran file yang lebih kecil: File video MP4 melakukan kompresi lebih efektif daripada format lain seperti APNG atau IXD, yang meningkatkan kecepatan pemuatan dan mengurangi konsumsi lebar pita jaringan.
Kompatibilitas yang lebih tinggi: MP4 adalah format video universal yang didukung luas di berbagai perangkat dan browser, yang memastikan efek hadiah diputar dengan benar di perangkat utama.
Efisiensi pengembangan yang lebih tinggi: Menggunakan video MP4 sebagai efek hadiah melibatkan solusi teknis yang relatif sederhana. Developer tidak perlu meneliti dan mengimplementasikan logika parsing dan rendering yang kompleks, sehingga dapat 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.
Contoh:
Buat view untuk menampilkan subtitle.
Buat tampilan berbeda berdasarkan format subtitle.
Jika Anda menggunakan Player SDK V7.6.0 ke atas dan
VttSubtitleViewuntuk menampilkan subtitle SRT dan VTT, Anda harus menetapkan listener berikut:// Diperlukan untuk player V7.6.0 ke atas 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.
PentingTetapkan file subtitle di
onPrepared.mAliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() { @Override public void onPrepared() { // Pengaturan subtitle (harus ditetapkan di onPrepared) mAliPlayer.addExtSubtitle(EXT_SUBTITLE_URL); } });Atur listener terkait subtitle.
Pemutaran hanya audio
Untuk mencapai pemutaran hanya audio, nonaktifkan pemutaran video dengan mengonfigurasi PlayerConfig sebelum memanggil prepare.
PlayerConfig config = aliPlayer.getConfig();
config.mDisableVideo = true; // Aktifkan pemutaran hanya audio
aliPlayer.setConfig(config);Beralih antara decoding software dan hardware
Ubah metode decoding sebelum pemutaran dimulai. Beralih selama pemutaran tidak berpengaruh.
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. 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 ditetapkan, aliran cadangan tersebut diputar secara otomatis. Jika tidak ada aliran cadangan H.264 yang ditetapkan, pemutar secara otomatis fallback ke decoding software H.265.
Fitur ini hanya diaktifkan setelah Anda mengaktifkan layanan bernilai tambah untuk decoding adaptif dengan kemampuan gabungan cloud dan klien. Untuk mengaktifkan layanan ini, Anda harus mengisi formulir Yida untuk mengajukan lisensi.
Layanan bernilai tambah untuk decoding adaptif dengan kemampuan gabungan 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.
Bahkan jika layanan bernilai tambah ini tidak diaktifkan, SDK masih dapat secara otomatis beralih ke decoding software saat decoding hardware gagal.
Kode berikut menunjukkan cara mengatur aliran cadangan:
// Lapisan aplikasi memelihara Map yang menyimpan semua pasangan kunci-nilai URL asli-URL cadangan. Saat beralih, kueri URL cadangan 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 adaptasi
aliPlayer.selectTrack(TrackInfo.AUTO_SELECT_INDEX);Hasil switch dikembalikan melalui callback setelah Anda menetapkan 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 pemutar untuk beralih aliran pemutaran ke adaptive bitrate streaming, Anda dapat menetapkan definisi maksimum untuk switching ABR (adaptive bitrate) dalam konfigurasi. Hal ini mencegah switching otomatis ke bitrate yang tidak diharapkan. Agar pengaturan berlaku, kami menyarankan Anda memanggil kode ini sebelum pemutar memanggil metode prepare atau list player memanggil metode moveTo. Kode berikut merupakan contohnya:
PlayerConfig config = aliPlayer.getConfig();
config.mMaxAllowedAbrVideoPixelNumber = 921600; // Tetapkan batas atas jumlah piksel untuk definisi ABR menjadi 921600 (lebar × tinggi = 1280 × 720), sehingga jumlah piksel definisi yang dapat dialihkan ABR ≤ nilai ini
aliPlayer.setConfig(config);Ambil snapshot
ApsaraVideo Player SDK untuk Android menyediakan fitur snapshot untuk menangkap frame video saat ini. Anda dapat menggunakan operasi API snapshot, yang menangkap data mentah dan mengembalikannya sebagai bitmap melalui antarmuka callback OnSnapShotListener. Kode berikut merupakan contohnya:
// Tetapkan callback snapshot
aliPlayer.setOnSnapShotListener(new OnSnapShotListener(){
@Override
public void onSnapShot(Bitmap bm, int with, int height){
// Bitmap dan dimensi gambar yang diperoleh
}
});
// Tangkap 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, gunakan metode VidPlayerConfigGen.setPreviewTime() untuk menetapkan durasi pratinjau untuk pemutar. Kode berikut menunjukkan contoh untuk pemutaran VidSts:
VidSts vidSts = new VidSts;
....
VidPlayerConfigGen configGen = new VidPlayerConfigGen();
configGen.setPreviewTime(20);// Pratinjau 20 detik
vidSts.setPlayConfig(configGen);// Tetapkan untuk sumber pemutaran
...Saat durasi pratinjau ditetapkan, server tidak mengembalikan konten video lengkap saat video diputar 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();
// Tetapkan Referer. Contoh: http://example.aliyundoc.com. (Catatan: Sertakan bagian protokol saat menetapkan Referer.)
config.mReferrer = referrer;
....// Pengaturan lainnya
// Tetapkan konfigurasi untuk pemutar
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();
// Tetapkan UA
config.mUserAgent = "User-Agent yang akan ditetapkan";
....// Pengaturan lainnya
// Tetapkan konfigurasi untuk pemutar
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();
// Tetapkan timeout jaringan dalam milidetik
config.mNetworkTimeout = 5000;
// Tetapkan jumlah upaya percobaan ulang saat timeout. Interval percobaan ulang adalah networkTimeout. networkRetryCount=0 berarti tidak ada percobaan ulang; kebijakan percobaan ulang ditentukan oleh aplikasi. Nilai default adalah 2
config.mNetworkRetryCount=2;
....// Pengaturan lainnya
// Tetapkan konfigurasi untuk pemutar
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 menetapkan Host di header
// Tetapkan header
config.setCustomHeaders(headers);
....// Pengaturan lainnya
// Tetapkan konfigurasi untuk pemutar
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 PiP, dapat disesuaikan berdasarkan kebutuhan bisnis Anda 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 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 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
Tetapkan listener untuk mendapatkan data aliran audio dan video. Fitur ini tidak mendukung aliran terenkripsi karena 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
/**
* Menetapkan warna latar belakang video.
*
* @param color ARGB
*
*/
abstract public void setVideoBackgroundColor(int color);Petunjuk penggunaan
// Parameter adalah data heksadesimal 8 digit. 8 digit 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
/**
* Menetapkan 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 dekode H.266
H.266 (VVC/Versatile Video Coding) adalah standar encoding video generasi berikutnya yang secara signifikan dapat 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 versi 7.6.0 ke atas.
Anda telah mendapatkan lisensi Edisi Profesional. Untuk informasi selengkapnya, lihat Dapatkan lisensi untuk ApsaraVideo Player SDK.
ApsaraVideo Player dengan plugin decoding H.266 hanya mendukung 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 refresh 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, memastikan pemutaran video yang berkelanjutan dan lancar.
Prasyarat
ApsaraVideo Player SDK atau All-in-One SDK versi 7.9.0 ke atas.
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
/**
* Menetapkan listener untuk event kedaluwarsa sumber URL.
*
* Fitur ini memungkinkan refresh URL untuk menghindari gangguan pemutaran yang disebabkan oleh
* kedaluwarsa URL karena autentikasi. Saat listener dipicu,
* Anda dapat merefresh 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 konfigurasi autentikasi URL, lihat
* <a href="https://www.alibabacloud.com/help/zh/vod/user-guide/configure-url-signing?spm=a2c4g.11186623.0.0.560c4140fGh8MW">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
/**
* Menetapkan skenario pemutar.
*
* @param scene
*/
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 RTS langsung
*/
RTS_LIVE
}Petunjuk penggunaan
// Tetapkan skenario video pendek
aliPlayer.setPlayerScene(PlayerScene.SHORT)
// Tetapkan skenario video menengah
aliPlayer.setPlayerScene(PlayerScene.MEDIUM)
// Tetapkan skenario video panjang
aliPlayer.setPlayerScene(PlayerScene.LONG)
// Tetapkan 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.
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.
Aktifkan cache lokal
Fitur cache lokal dinonaktifkan secara default. Untuk menggunakannya, Anda harus mengaktifkannya secara manual. Fitur ini dikontrol oleh AliPlayerGlobalSettings melalui enableLocalCache. 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.
Aktifkan atau nonaktifkan cache lokal untuk URL tunggal
Jika Anda ingin mengaktifkan atau menonaktifkan fitur cache lokal untuk URL tunggal, Anda dapat menyetelnya di PlayerConfig.
// 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 (ditetapkan ke true), cache lokal untuk URL ini akan berlaku. Jika ditetapkan ke false di sini, cache lokal untuk URL ini dinonaktifkan.
config.mEnableLocalCache = false;
....// Pengaturan lainnya
// Tetapkan konfigurasi untuk pemutar
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("<kredensialPlayAuthAnda>");// Wajib. Kredensial pemutaran, yang perlu dihasilkan dengan memanggil operasi API GetVideoPlayAuth ApsaraVideo VOD. vidAuth.setRegion("Wilayah akses");// Untuk SDK pemutar V5.5.5.0 ke atas, parameter ini tidak berlaku lagi. Anda tidak perlu menyetel wilayah, karena pemutar akan mengurai secara otomatis. Untuk versi SDK pemutar sebelum 5.5.5.0, parameter ini wajib. Ini adalah wilayah akses ApsaraVideo VOD, default ke cn-shanghai. vidAuth.setQuality("Definisi yang dipilih") //"AUTO" merepresentasikan bitrate adaptifVidSts
VidSts vidSts = new VidSts(); vidSts.setVid("Informasi Vid");// Wajib. ID video (VideoId). vidSts.setAccessKeyId("<AccessKeyIdAnda>");// Wajib. ID AccessKey token STS sementara, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. vidSts.setAccessKeySecret("<AccessKeySecretAnda>");// Wajib. Rahasia AccessKey token STS sementara, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. vidSts.setSecurityToken("<tokenKeamananAnda>");// Wajib. Token keamanan STS, yang perlu dihasilkan dengan memanggil operasi API AssumeRole STS. vidSts.setRegion("Wilayah akses");// Wajib. Wilayah akses ApsaraVideo VOD, default ke cn-shanghai. vidSts.setQuality("Definisi yang dipilih") //"AUTO" merepresentasikan bitrate adaptifUrlSource
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(); // Tetapkan bitrate preload untuk aliran multi-bitrate preloadConfig.setDefaultBandWidth(400000); // Tetapkan resolusi preload untuk aliran multi-bitrate preloadConfig.setDefaultResolution(640 * 480); // Tetapkan kualitas preload untuk aliran multi-bitrate preloadConfig.setDefaultQuality(“FD”); // Tetapkan 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 instans MediaLoaderV2 MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // Tambahkan tugas dan mulai preload String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl)VidSts
// Buat tugas preload PreloadTask mPreloadTask = new PreloadTask(vidSts, preloadConfig); // Dapatkan instans MediaLoaderV2 MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // Tambahkan tugas dan mulai preload String taskId = mediaLoaderV2.addTask(mPreloadTask, PreloadListenerImpl);UrlSource
// Buat tugas preload PreloadTask mPreloadTask = new PreloadTask(urlSource, preloadConfig); // Dapatkan instans MediaLoaderV2 MediaLoaderV2 mediaLoaderV2 = MediaLoaderV2.getInstance(); // Tambahkan tugas dan mulai preload 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 tertentuOpsional: 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 dari callback onInfo 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 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:
PrivateService.initService(getApplicationContext(), "Jalur file tempat encryptedApp.dat berada"); // Kami menyarankan menyimpan file encryptedApp.dat di ponsel dan kemudian menyetel jalur file lokal file enkripsi di siniBuat 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 objek VidSts. VidSts aliyunVidSts = new VidSts(); aliyunVidSts.setVid("id_video_anda"); // ID video. aliyunVidSts.setAccessKeyId("<AccessKeyIdAnda>"); // ID AccessKey token STS sementara. Untuk mendapatkan token, Anda harus memanggil operasi AssumeRole STS. aliyunVidSts.setAccessKeySecret("<AccessKeySecretAnda>"); // Rahasia AccessKey token STS sementara. Untuk mendapatkan token, Anda harus memanggil operasi AssumeRole STS. aliyunVidSts.setSecurityToken("<tokenKeamananAnda>"); // Token keamanan. Untuk mendapatkan token, Anda harus memanggil operasi AssumeRole STS. aliyunVidSts.setRegion("id_wilayah_anda"); // ID wilayah tempat VOD diaktifkan. Nilai default: cn-shanghai. // Jika Anda mengaktifkan enkripsi HLS dengan parameter pass-through di konsol VOD dan nama parameter default adalah MtsHlsUriToken, Anda harus menyetel parameter config dan meneruskannya ke objek VidSts. Untuk informasi selengkapnya, lihat kode berikut. // Jika Anda tidak mengaktifkan enkripsi HLS dengan parameter pass-through di konsol VOD, Anda tidak perlu mengintegrasikan kode berikut. VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<MtsHlsUriTokenAnda>"); aliyunVidSts.setPlayerConfig(vidConfig); // Siapkan sumber unduhan. mAliDownloader.prepare(aliyunVidSts);VidAuth
// Buat objek VidAuth. VidAuth vidAuth = new VidAuth(); vidAuth.setVid("ID Video Anda");// ID video (VideoId). vidAuth.setPlayAuth("<kredensialPlayAuthAnda>");// Kredensial pemutaran. Anda harus memanggil operasi GetVideoPlayAuth layanan VOD untuk menghasilkan kredensial. vidAuth.setRegion("Wilayah");// Untuk SDK pemutar V5.5.5.0 ke atas, parameter ini tidak berlaku lagi. Anda tidak perlu menyetel wilayah karena pemutar secara otomatis mengurai wilayah. Untuk SDK pemutar sebelum V5.5.5.0, parameter ini wajib. Ini menentukan wilayah tempat layanan VOD diaktifkan. Nilai default adalah cn-shanghai. // Jika Anda mengaktifkan pass-through parameter enkripsi HLS di konsol VOD dan nama parameter default adalah MtsHlsUriToken, Anda harus menyetel config dan meneruskannya ke objek VidAuth. Untuk informasi selengkapnya, lihat kode berikut. VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<MtsHlsUriTokenAnda>"); vidAuth.setPlayerConfig(vidConfig); // 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. 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");// Tetapkan 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.