Topik ini menyediakan solusi untuk masalah umum yang mungkin Anda temui saat menggunakan ApsaraVideo Player SDK untuk Android.
Masalah terkait lisensi
Atasi masalah lisensi tidak valid atau kedaluwarsa di FAQ Lisensi.
Masalah umum lintas platform
Untuk masalah yang tidak bergantung pada platform, periksa FAQ pemutar lintas platform.
Pengembang berpengalaman juga dapat mendiagnosis error pemutaran secara mandiri.
Masalah pengembangan
Dapatkan progres pemutaran saat ini
Player SDK melaporkan progres pemutaran setiap 500 ms secara default. Perpendek interval callback untuk mendapatkan progres pemutaran lebih sering:
// Ubah interval callback.
PlayerConfig config = mAliyunLivePlayer.getConfig();
config.mPositionTimerIntervalMs = 100;// Interval callback dalam ms.
mAliyunLivePlayer.setConfig(config);
mAliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
@Override
public void onInfo(InfoBean infoBean) {
if(infoBean.getCode() == InfoCode.CurrentPosition){
// Progres pemutaran saat ini.
long currentPosition = infoBean.getExtraValue();
}
}
});Dapatkan data audio dan video sumber
Data audio dan video mentah hanya dikembalikan jika Anda beralih ke decoding software dan memutar video yang tidak dienkripsi:
// Beralih ke decoding software.
mAliPlayer.enableHardwareDecoder(false);
IPlayer.RenderFrameCallbackConfig renderFrameCallbackConfig = new IPlayer.RenderFrameCallbackConfig();
// Menentukan apakah hanya mengembalikan alamat data video dasar. Nilai default: true.
renderFrameCallbackConfig.mVideoDataAddr = false;
// Menentukan apakah hanya mengembalikan alamat data audio dasar. Nilai default: false.
renderFrameCallbackConfig.mAudioDataAddr = false;
mAliPlayer.setRenderFrameCallbackConfig(renderFrameCallbackConfig);
mAliPlayer.setOnRenderFrameCallback(new IPlayer.OnRenderFrameCallback() {
@Override
public boolean onRenderFrame(FrameInfo frameInfo) {
return false;
}
});Dapatkan lebar dan tinggi video
Anda dapat mendapatkan lebar dan tinggi video dengan cara berikut:
Setelah instans
AliPlayerdari ApsaraVideo Player menjalankan metodeprepare, pastikan instans tersebut setidaknya berada dalam status prepared, lalu panggil metode berikut:
mAliyunPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
@Override
public void onPrepared() {
mAliyunPlayer.getVideoWidth();
mAliyunPlayer.getVideoHeight();
}
});Dengarkan callback perubahan ukuran video:
mAliyunPlayer.setOnVideoSizeChangedListener(new IPlayer.OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(int width, int height) {
}
});Dapatkan nilai berdasarkan track:
mAliyunPlayer.setOnTrackReadyListener(new IPlayer.OnTrackReadyListener() {
@Override
public void onTrackReady(MediaInfo mediaInfo) {
List<TrackInfo> trackInfos = mediaInfo.getTrackInfos();
for (TrackInfo trackInfo : trackInfos) {
if(trackInfo.getType() == TrackInfo.Type.TYPE_VIDEO){
trackInfo.getVideoWidth();
trackInfo.getVideoHeight();
}
}
}
});Bagaimana cara mendapatkan data piksel setiap frame video di pemutar?
Untuk pemutar Android, dengarkan callback OnRenderFrameCallback:
player.setOnRenderFrameCallback(frameInfo -> {
if (frameInfo.frameType == FrameInfo.FrameType_video) {
// Data video
} else {
// Data audio
}
return false;
});Logika switching bitrate otomatis
Setelah Anda mengaktifkan switching bitrate otomatis dengan memanggil mAliPlayer.selectTrack(TrackInfo.AUTO_SELECT_INDEX), player SDK melacak kecepatan jaringan saat ini. Jika kecepatan mencapai bitrate berikutnya dalam waktu 10 detik, pemutar akan beralih ke bitrate tersebut. Jika kecepatan tidak mencapai bitrate berikutnya dalam waktu 10 detik, tidak terjadi peralihan.
Saat beralih dari bitrate tinggi ke bitrate rendah, jika kecepatan jaringan mencapai bitrate berikutnya dalam waktu 10 detik, pemutar menyelesaikan pemutaran konten bitrate tinggi yang telah di-cache sebelum beralih.
Saat beralih dari bitrate rendah ke bitrate tinggi, jika kecepatan jaringan mencapai bitrate berikutnya dalam waktu 10 detik, pemutar langsung beralih.
Untuk menggunakan switching bitrate otomatis, pertama-tama transkode video menjadi aliran bitrate adaptif di konsol, lalu konfigurasikan pemutar untuk mendapatkan aliran bitrate adaptif tersebut. Contoh berikut menggunakan metode pemutaran
VidAuth:
VidAuth vidAuth = new VidAuth();
List<Definition> list = new ArrayList<>();
list.add(Definition.DEFINITION_AUTO);
vidAuth.setDefinition(list);Logika retry kustom
Dalam skenario retry jaringan, player SDK secara default melakukan retry dua kali dengan timeout jaringan 15 detik. Callback Error dipicu setelah retry gagal.
Anda dapat menyesuaikan logika retry sehingga event retry dilaporkan ke aplikasi Anda, yang kemudian menentukan perilaku retry sebenarnya:
PlayerConfig config = mAliPlayer.getConfig();
// 1. Atur jumlah retry. Pada contoh ini, diatur ke 0.
config.mNetworkRetryCount = 0;
mAliPlayer.setConfig(config);
mAliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
@Override
public void onInfo(InfoBean infoBean) {
// 2. Dengarkan event retry.
if(infoBean.getCode() == InfoCode.NetworkRetry){
// TODO: Proses logika sesuai kebutuhan.
}
}
});Terjadi error unsupported protocol saat memutar aliran Alibaba Real-Time Communication (ARTC)
Penyebab 1: Player SDK diintegrasikan, tetapi layer bridge antara pemutar dan komponen live streaming latensi rendah RTS (AlivcArtc) serta komponen live streaming latensi rendah RTS (RtsSDK) belum diintegrasikan.
Solusi: Integrasikan sesuai petunjuk di Implementasi penarikan aliran RTS di Android.
Penyebab 2: Versi layer bridge (AlivcArtc) tidak sesuai dengan versi pemutar.
Solusi: Layer bridge (AlivcArtc) dan pemutar harus menggunakan nomor versi yang sama. Untuk implementasinya, lihat topik Implementasi penarikan aliran RTS di Android.
Penyebab 3: Komponen live streaming latensi rendah RTS (RtsSDK) belum dimuat.
Solusi: Muat komponen live streaming latensi rendah RTS (RtsSDK) di file Application atau di Activity target sesuai kebutuhan Anda.
static {
System.loadLibrary("RtsSDK");
}Penyebab 4: Versi minSDK terlalu tinggi, sehingga layer bridge (AlivcArtc) tidak dimuat dengan benar.
Solusi:
// 1. Ubah minSdk
Turunkan minSdk ke 21
// 2. Muat manual library ARTC
static {
System.loadLibrary("RtsSDK");
System.loadLibrary("cicada_plugin_artcSource");
}Bilah progres melompat mundur setelah operasi seek
Penyebab: Pemutar menggunakan seek tidak akurat secara default. Setelah operasi seek, pemutar memulai pemutaran dari keyframe terdekat ke titik seek.
Solusi: Beralih ke mode seek akurat.
Bagaimana cara beralih antara mode seek akurat dan tidak akurat?
Contoh berikut menunjukkan cara beralih antara mode seek:
// Seek tidak akurat.
mAliPlayer.seekTo(1000);
mAliPlayer.seekTo(1000, IPlayer.SeekMode.Inaccurate);
// Seek akurat.
mAliPlayer.seekTo(1000,IPlayer.SeekMode.Accurate);Bilah progres tetap melompat mundur setelah saya beralih ke mode seek akurat
Penyebab: Seek akurat memerlukan waktu lebih lama daripada seek tidak akurat. Ketika jarak dari titik seek ke keyframe terdekat, yaitu awal Group of Pictures (GOP), terlalu besar dan melebihi interval maksimum seek akurat, player SDK secara otomatis kembali ke seek tidak akurat, sehingga bilah progres melompat mundur.
Solusi: Tingkatkan interval maksimum seek akurat melalui antarmuka. Hal ini mengurangi frekuensi fallback dari seek akurat ke seek tidak akurat dan meningkatkan akurasi seek. Namun, jarak yang lebih jauh dari titik seek ke keyframe terdekat (GOP) juga berarti waktu seek yang lebih lama. Atur interval maksimum seek akurat berdasarkan karakteristik bisnis Anda:
// Satuan: ms.
mAliPlayer.setMaxAccurateSeekDelta(10000);Peng-cache-an lokal: Apakah direktori cache dapat diatur ke direktori penyimpanan internal?
Ya. Ganti direktori penyimpanan eksternal perangkat Android dengan direktori penyimpanan internal. Pastikan direktori penyimpanan internal memiliki izin akses, sehingga peng-cache-an berfungsi dengan baik.
Terjadi error encrypt check fail saat caching video
Caching merupakan operasi unduh. Jika unduhan aman diaktifkan, pastikan file verifikasi enkripsi sesuai dengan informasi aplikasi Anda. Unduh file verifikasi enkripsi yang dihasilkan di Unduhan offline dan simpan ke player SDK. Untuk informasi selengkapnya, lihat Unduhan video. Ketidaksesuaian menyebabkan caching atau pengunduhan gagal.
Video multi-bitrate (HLS) tidak masuk cache setelah peng-cache-an lokal diaktifkan
Gejala: Anda telah mengaktifkan peng-cache-an lokal dan preloading seperti yang dijelaskan dalam dokumentasi, tetapi satu atau beberapa hal berikut terjadi:
Seeking kembali ke posisi yang sudah diputar tidak mengenai cache.
Pemutaran tidak dapat dilanjutkan setelah jaringan terputus.
isCacheExistmengembalikanfalse.Direktori cache kosong setelah preloading dinonaktifkan.
Penyebab: Dalam skenario multi-bitrate (HLS), jika Anda tidak secara eksplisit memilih aliran selama pemutaran, pemutar menggunakan streaming bitrate adaptif (ABR). Data dalam mode ABR tidak ditulis ke disk, sehingga tidak ada cache lokal yang dihasilkan. Hanya aliran yang Anda pilih secara eksplisit dengan memanggil
selectTrackyang di-cache secara lokal. Jika Anda tidak memanggilselectTrack, atau jika Anda meneruskanTrackInfo.AUTO_SELECT_INDEX, pemutar menangani pemutaran sebagai ABR.
Solusi: Pastikan preloading dan pemutaran menggunakan definisi yang sama dan URL pemutaran yang sama, serta pilih secara eksplisit aliran tersebut selama pemutaran.
Saat preloading, aktifkan peng-cache-an lokal dan preload aliran definisi tertentu.
Saat pemutaran, panggil
selectTrackdalam callbackonPrepareddarisetOnPreparedListeneruntuk memilih definisi yang sama yang digunakan untuk preloading. Teruskan URL pemutaran yang sama yang digunakan untuk preloading kesetDataSource, lalu panggilpreparedanstart.Jika bitrate startup berbeda dari bitrate yang dibuka secara default, buffering akan dipicu. Panggil
setDefaultBandWidthuntuk mengatur bitrate startup dan mengurangi tersendat saat switching.
Terjadi error No such file or directory saat memutar video HLS (m3u8) dari unduhan offline
Gejala: Setelah unduhan offline HLS, memutar alamat lokal melaporkan No such file or directory. Masalah ini tidak selalu dapat direproduksi dan lebih sering terjadi dalam skenario seperti geser cepat antar halaman.
Penyebab: Untuk menghemat ruang penyimpanan, unduhan offline HLS biasanya hanya mengunduh segmen TS dan file m3u8 dari satu definisi, misalnya 540p. Namun, file master m3u8 yang disimpan secara lokal masih menyimpan catatan semua definisi, seperti 1080p, 720p, 540p, dan 360p. Jika Anda tidak menentukan definisi yang diunduh sebelum memanggil prepare, pemutar mengikuti logika default atau adaptif dan meminta segmen dari definisi lain yang tidak ada secara lokal. Hal ini melaporkan error file tidak ditemukan. Pemicu umum adalah pemanggilan yang tidak menentukan definisi, atau pemanggilan yang dilakukan setelah prepare.
Solusi:
Panggil
setDefaultResolutionsebelumprepareuntuk menentukan definisi yang sama yang digunakan untuk unduhan offline.Pastikan setiap titik masuk pemutaran menetapkan definisi default, termasuk cabang untuk geser cepat, penggunaan ulang multi-instans, dan switching preload, sehingga tidak ada jalur yang terlewat.
Panggil
getCurrentTrackuntuk memverifikasi bahwa definisi yang benar-benar digunakan untuk pemutaran startup adalah definisi yang diunduh.
Audio dan video tidak sinkron setelah beralih video, atau memutar ulang video yang sama tidak mengenai cache
Gejala: Setelah peng-cache-an lokal diaktifkan, audio dan video tidak sinkron saat Anda beralih video, seperti beralih episode: video berasal dari episode baru sedangkan audio masih dari episode sebelumnya. Atau, memutar ulang video yang sama tidak mengenai cache. Membersihkan cache mengembalikan perilaku normal.
Penyebab: Setelah peng-cache-an lokal diaktifkan, pemutar menggunakan hash yang dikembalikan oleh callback setCacheUrlHashCallback sebagai pengenal cache unik untuk setiap URL pemutaran. Jika callback kustom Anda tidak menjamin bahwa URL pemutaran yang sama selalu mengembalikan hash yang sama dan konten berbeda mengembalikan hash berbeda, kunci cache tidak sesuai. Konten berbeda kemudian mengenai cache yang sama, yang muncul sebagai audio dan video tidak sinkron. Atau, URL yang sama mengembalikan hash berbeda setiap kali dan tidak pernah mengenai cache.
Solusi:
Callback harus secara konsisten mengembalikan hash yang sama untuk URL pemutaran yang sama, dan hash berbeda untuk media berbeda.
Jika Anda menghapus parameter autentikasi untuk meningkatkan rasio hit cache, hapus hanya dari URL pemutaran (m3u8 atau mp4) sebelum menghitung hash. Jangan hapus parameter autentikasi dari keyURL file m3u8 terenkripsi. Jika tidak, kunci video berbeda akan mengenai cache yang sama dan pemutaran gagal. Anda dapat menangani kedua kasus tersebut secara terpisah berdasarkan nama domain di dalam callback.
Jika file yang sama memiliki alamat HTTP dan HTTPS, satukan protokol atau hapus header protokol sebelum menghitung hash.
Untuk informasi selengkapnya, lihat Cache lokal.
Terjadi kegagalan autentikasi saat memutar video dengan enkripsi proprietary Alibaba Cloud
Gejala: Kegagalan autentikasi dilaporkan, atau video tidak dapat diputar, saat Anda memutar video yang dienkripsi dengan enkripsi proprietary Alibaba Cloud.
Penyebab: Enkripsi proprietary Alibaba Cloud menyelesaikan dekripsi melalui interaksi antara pemutar dan server, sehingga pemutaran harus dimulai melalui metode pemutaran berbasis vid. Jika Anda meneruskan URL pemutaran langsung ke UrlSource ApsaraVideo VOD untuk video dengan enkripsi proprietary standar, autentikasi dan dekripsi tidak dapat diselesaikan dan pemutaran gagal.
Solusi:
Pada klien native, putar video dengan enkripsi proprietary melalui
VidAuthatauVidStsApsaraVideo VOD. Jika aliran output juga berisi aliran yang tidak dienkripsi dengan enkripsi proprietary, panggilVidPlayerConfigGen.setEncryptType(AliyunVoDEncryption)untuk memfilter aliran yang dienkripsi proprietary.Hanya enkripsi proprietary License yang mendukung pemutaran
UrlSourceApsaraVideo VOD. Untuk MP4, tambahkanetavirp_nuyila=1di akhir URL. Untuk HLS, versi 6.17.0 dan yang lebih baru dapat menggunakan URL asli secara langsung. Opsi ini tidak berlaku untuk enkripsi proprietary standar.Untuk informasi selengkapnya, lihat Putar video terenkripsi.
Masalah pemutaran
Terjadi crash saat membuat pemutar
Diagnosis penyebabnya sebagai berikut:
Periksa apakah arsitektur CPU adalah arsitektur x86.
Player SDK hanya mendukung arsitektur arm64-v8a dan armeabi-v7a. Tidak mendukung arsitektur x86.
Periksa apakah proyek mencampur file
.sodan dependensi Maven dari player SDK.Misalnya, Anda mengintegrasikan player SDK melalui dependensi Maven di
build.gradle, dan Anda juga mengintegrasikan library dinamis terkait pemutar di direktorilibsmodul proyek.
Solusi yang direkomendasikan: Jika keduanya digunakan, hapus library dinamis dan gunakan dependensi Maven. Jika Anda harus mengintegrasikan library dinamis, pastikan file .so dari player SDK konsisten dan berasal dari versi yang sama. Untuk informasi tentang cara mengintegrasikan player SDK dan mendapatkan library dinamis, lihat Integrasikan SDK. File library dinamis terkait pemutar adalah libalivcffmpeg.so, libsaasCorePlayer.so, dan libsaasDownloader.so.
Jika Anda mengintegrasikan paket parsial, konfirmasi bahwa dependensi versi AlivcFFmpeg benar.
Untuk informasi tentang dependensi versi AlivcFFmpeg, lihat Dependensi versi AlivcFFmpeg.
Terjadi crash saat pemutar sedang berjalan
Diagnosis penyebabnya sebagai berikut:
Konfirmasi apakah crash terjadi di player SDK.
Periksa apakah stack crash membawa awalan
AliyunPlayer. Jika iya, masalah terjadi di player SDK.Upgrade ke versi terbaru player SDK dan verifikasi apakah masalah telah diperbaiki.
Jika masalah tetap ada, siapkan file crash terkait (termasuk semua thread), log crash, dan detail skenario crash, lalu lihat Cara mendapatkan log masalah.
Muncul bar hitam selama pemutaran video
Diagnosis penyebabnya sebagai berikut:
Periksa apakah video sumber itu sendiri memiliki bar hitam.
Atur mode penskalaan pemutar melalui antarmuka berikut.
/*
SCALE_ASPECT_FILL: Mengisi layar secara proporsional. Video dipotong.
SCALE_ASPECT_FIT: Menskalakan video secara proporsional. Bar hitam mungkin muncul.
SCALE_TO_FILL: Mengisi layar tanpa mempertahankan proporsi. Video terdistorsi.
*/
mAliPlayer.setScaleMode();Jika mode penskalaan masih belum memenuhi kebutuhan Anda, atur ukuran
SurfaceViewatauTextureViewdi lapisan aplikasi.
Audio diputar tetapi tidak ada video yang muncul
Diagnosis penyebabnya sebagai berikut:
Mainkan video dengan pemutar lain untuk memeriksa apakah video tersebut hanya audio.
Konfirmasi bahwa view yang digunakan untuk rendering video dikonfigurasi dengan benar. Misalnya, tidak ada view tampilan yang diatur untuk pemutar, atau view tampilan dihapus dari antarmuka pemutaran. Untuk informasi tentang cara mengatur view tampilan, lihat Langkah 4 di Fitur dasar.
Terjadi error Invalid argument saat memutar video lokal yang sudah memiliki izin baca
Saat terjadi error Invalid argument untuk video lokal yang sudah memiliki izin baca, periksa nama file dan jalur mutlak file tersebut. Hindari jalur yang mengandung karakter Cina dan spasi.
Terjadi error Permission denied saat memutar video lokal yang sudah memiliki izin baca
Android memperkenalkan fitur scoped storage di Android 10 (Android Q). Untuk menggunakan izin penyimpanan perangkat Android secara normal, tambahkan android:requestLegacyExternalStorage="true" ke tag application di AndroidManifest.xml.
Terjadi error Redirect to a url sesekali selama pemutaran video
Error ini mungkin terjadi karena sumber video dibajak. Aktifkan fitur HTTPDNS pemutar untuk menanganinya. Untuk informasi selengkapnya, lihat Konfigurasi HTTPDNS untuk Android.
Bilah notifikasi hitam berkedip pada layar bernotch selama pemutaran layar penuh
Atur status bar imersif untuk mengatasi masalah ini.
Video MOV gagal diputar
Player SDK Android mendukung video MOV. Jika pemutaran video MOV gagal, periksa apakah atom moov (indeks data audio dan video) dari video sumber berada setelah atom mdat (data audio dan video). Transkode video sumber untuk memindahkan atom moov sebelum atom mdat. Untuk informasi selengkapnya, lihat Langkah 2: Diagnosa aliran.
Terjadi error yang menunjukkan bahwa library dinamis .so player SDK tidak ditemukan selama inisialisasi atau pemutaran
Diagnosis penyebabnya sebagai berikut:
Periksa apakah arsitektur CPU memenuhi persyaratan.
Player SDK hanya menyediakan library dinamis untuk arsitektur arm64-v8a dan armeabi-v7a.
Periksa apakah versi player SDK terlalu lama.
Jika versi player SDK adalah 5.4.6.0-full atau lebih lama, upgrade ke 5.4.6.0-full-15467853 atau yang lebih baru. Untuk versi terbaru dan historis player SDK, lihat Catatan rilis SDK Android.
Terjadi error saat menggunakan pemutar daftar AliListPlayer untuk memutar video HLS (m3u8)
Player SDK V5.4.5.0 dan yang lebih lama tidak mendukung pemutaran video HLS (m3u8) dengan pemutar daftar AliListPlayer. Versi yang lebih baru dari V5.4.5.0 mendukung pemutaran daftar HLS (m3u8), tetapi Anda harus mengaktifkan peng-cache-an lokal. Untuk informasi tentang cara mengaktifkan peng-cache-an lokal, lihat Cache lokal.
Apakah Player SDK Android mendukung pemutaran video di folder assets dan raw proyek Android?
Tidak. Salin video ke penyimpanan ponsel, lalu putar video tersebut menggunakan jalur mutlaknya.
Terjadi error 403 dan pemutaran gagal setelah peng-cache-an lokal dikonfigurasi untuk aliran video HLS
Gejala: Saat Anda memutar aliran video HLS (M3U8) menggunakan metode pemutaran VidAuth dengan peng-cache-an lokal diaktifkan, pemutaran gagal dan error 403 dilaporkan.
Penyebab: Setelah peng-cache-an lokal diaktifkan, jika Anda keluar dari pemutaran sebelum video sepenuhnya di-cache, bagian yang belum di-cache tetap diminta dengan informasi autentikasi Vid yang kedaluwarsa dari sesi sebelumnya saat Anda memulai pemutaran berikutnya. Hal ini menyebabkan kegagalan autentikasi dan error 403.
Solusi: Untuk player SDK V5.5.4.0 dan yang lebih baru, jika URL pemutaran video membawa parameter autentikasi dan protokol pemutaran adalah HLS, Anda dapat mengatur field PlayerConfig.mEnableStrictAuthMode untuk memilih mode autentikasi. Nilai default adalah false.
-
Autentikasi non-ketat (false): Autentikasi di-cache. Jika hanya sebagian media yang di-cache sebelumnya, pemutar menggunakan autentikasi yang di-cache untuk permintaan berikutnya. Jika autentikasi URL memiliki periode validitas singkat atau pemutaran dilanjutkan setelah jeda panjang, autentikasi mungkin kedaluwarsa. Integrasikan dengan sumber pemutaran auto-refresh untuk menangani kedaluwarsa autentikasi.
-
Autentikasi ketat (true): Autentikasi tidak di-cache. Autentikasi terjadi pada setiap startup, menyebabkan kegagalan startup tanpa jaringan.
Autentikasi non-ketat (false): Autentikasi di-cache. Jika hanya sebagian media yang di-cache sebelumnya, pemutar menggunakan autentikasi yang di-cache untuk permintaan berikutnya. Jika autentikasi URL memiliki periode validitas singkat atau pemutaran dilanjutkan setelah jeda panjang, autentikasi mungkin kedaluwarsa. Integrasikan dengan sumber pemutaran auto-refresh untuk menangani kedaluwarsa autentikasi.
Autentikasi ketat (true): Autentikasi tidak di-cache. Autentikasi terjadi pada setiap startup, menyebabkan kegagalan startup tanpa jaringan.
Apakah Player SDK Android mendukung pemutaran video sambil mengunduhnya?
Tidak. Player SDK Android dapat meng-cache dan mengunduh file video selama pemutaran saat peng-cache-an lokal diaktifkan, dan file video yang di-cache diputar langsung pada pemutaran berikutnya. Mengambil file video yang di-cache dari direktori filenya dan memutarnya secara terpisah tidak didukung.
Apakah Player SDK Android mendukung mendapatkan kecepatan buffering video?
Ya. Player SDK Android dapat mendapatkan kecepatan buffering, laju frame rendering real-time, bitrate audio dan video, serta bitrate unduhan jaringan. Untuk informasi selengkapnya, lihat Dapatkan informasi pemutaran.
Pemutaran video HDR tidak normal
Player SDK Android saat ini tidak mendukung video HDR dengan sudut rotasi, sehingga pemutaran video tersebut tidak normal.
Jika video ditranskode menjadi beberapa definisi, definisi mana yang diputar oleh player SDK secara default?
Urutan pemutaran definisi default adalah FD, LD, SD, HD, 2K, 4K, dan OD. Untuk definisi setiap istilah, lihat definisi. Player SDK mencari dari kiri ke kanan dan memutar definisi pertama yang ditemukan.
Bagaimana cara menentukan definisi pemutaran default?
Contoh berikut menunjukkan cara menentukan definisi pemutaran default:
// Metode pemutaran VidSts digunakan sebagai contoh.
VidSts vidSts = new VidSts();
// Kode untuk mengatur parameter seperti vid, AccessKeyId, AccessKeySecret, dan token dihilangkan. Untuk informasi selengkapnya, lihat pengaturan pembuatan pemutar di topik Fitur Dasar.
/*
Parameter 1: Definisi pemutaran yang diinginkan. Nilai yang valid: FD, LD, SD, HD, 2K, 4K, dan OD.
Parameter 2: Menentukan apakah akan memaksakan pemutaran definisi yang diinginkan. false: Tidak memaksakan pemutaran definisi yang diinginkan. Player SDK mencari definisi untuk diputar berdasarkan urutan default. true: Memaksakan pemutaran definisi yang diinginkan. Jika definisi yang diinginkan tidak ditemukan, video tidak diputar.
*/
vidSts.setQuality("",false);Jika suatu definisi memiliki beberapa aliran, aliran mana yang diputar oleh player SDK?
Jika suatu definisi memiliki beberapa aliran, player SDK memutar aliran terbaru.
Masalah lainnya
Bagaimana cara memutar video tanpa watermark tetapi mengunduhnya dengan watermark?
Transkode video menjadi beberapa definisi. Putar definisi tanpa watermark, dan unduh definisi dengan watermark.
Cara mendapatkan log masalah
Saat Anda meminta dukungan teknis dari Alibaba Cloud, kirimkan log masalah Anda bersama permintaan agar masalah Anda dapat diselesaikan lebih efisien. Dapatkan log masalah sebagai berikut:
Dapatkan log masalah.
Atur tingkat log ke
AF_LOG_LEVEL_TRACEsebelum mengambil log masalah. Untuk prosedur lengkapnya, lihat Dapatkan log SDK.Berikan log yang dihasilkan kepada dukungan teknis Alibaba Cloud.