Topik ini menjelaskan cara menggunakan fitur kontrol pemutaran umum seperti putar otomatis, skin dan UI pemutar kustom, serta pengambilan snapshot dalam ApsaraVideo Player SDK untuk Web. Topik ini juga mencakup penggunaan fitur yang sesuai untuk skenario video panjang serta pemutaran video H.265 dan H.266.
Kontrol pemutaran
Putar otomatis
Meskipun Anda telah mengonfigurasi autoplay: true, fitur putar otomatis mungkin tidak aktif karena sebagian besar browser modern menonaktifkan putar otomatis dengan audio demi menjaga pengalaman pengguna.
Sebagai contoh, kebijakan AutoPlay Chrome adalah sebagai berikut:
Selalu izinkan putar otomatis dan bisukan
Putar otomatis dengan audio diizinkan dalam skenario berikut:
Pengguna telah berinteraksi dengan halaman web, misalnya dengan mengklik atau mengetuk.
Perilaku menonton video pengguna di situs web tersebut telah melebihi ambang batas tertentu. Misalnya, jika pengguna sering menonton video di situs tersebut, Chrome akan mengizinkan putar otomatis dengan audio. Ini merupakan kebijakan internal Chrome dan tidak dapat diintervensi oleh program.
Pengguna telah menambahkan situs web ke layar utama pada perangkat seluler atau menginstal Progressive Web App (PWA) pada perangkat desktop.
Dalam kasus tersebut, Anda dapat:
Mengonfigurasi mute: true untuk membisukan pemutaran otomatis. Untuk informasi lebih lanjut, lihat Operasi API.
Mengonfigurasi autoplayPolicy: { fallbackToMute: true } agar sistem terlebih dahulu mencoba memutar otomatis dengan audio. Jika gagal, pemutaran otomatis akan dilanjutkan dalam mode bisu. Untuk informasi lebih lanjut, lihat Operasi API.
Perlu diperhatikan bahwa putar otomatis dalam mode bisu juga dapat dinonaktifkan oleh beberapa browser, seperti browser WeChat, sehingga kami tidak dapat menjamin keberhasilan putar otomatis dalam semua kondisi.
Untuk informasi lebih lanjut mengenai kebijakan autoplay browser, lihat dokumentasi Chrome dan Safari.
Pemutaran berkelanjutan
Fitur pemutaran berkelanjutan memungkinkan pemutaran otomatis video berikutnya setelah video saat ini selesai. Fitur ini dipengaruhi oleh metode pemutaran, jenis pemutar, dan skenario pemutaran.
-
Pemutaran berbasis URL
ApsaraVideo Player SDK untuk Web perlu berlangganan event
ended. Di dalam eventended, panggil metodeloadByUrldengan URL video berikutnya sebagai parameter, seperti pada contoh berikut:function endedHandle() { var newUrl = ""; player.loadByUrl(newUrl); } player.on("ended", endedHandle); -
Pemutaran berbasis ID video dan kredensial pemutaran
-
Dalam event
ended, panggil metodereplayByVidAndPlayAuthdengan nilaividdan nilaiplayauthbaru. Berikut contohnya:function endedHandle() { var newPlayAuth = ""; player.replayByVidAndPlayAuth(vid,newPlayAuth); } player.on("ended", endedHandle);Pentingplayauthmemiliki periode validitas default 100 detik. Saat memanggil metodereplayByVidAndPlayAuth, Anda harus mendapatkan kredensial pemutaran baru.
-
Beralih protokol pemutaran video
Jika video MP4 sedang diputar dan video berikutnya menggunakan protokol HTTP Live Streaming (HLS), Anda harus membuat pemutar baru untuk mengaktifkan pemutaran otomatis video berikutnya setelah pemutaran video saat ini selesai. Kode contoh:
function endedHandle() { var newUrl = ""; // Tentukan URL video berikutnya. player.dispose(); // Hancurkan pemutar yang ada. // Buat pemutar baru. setTimeout(function(){ player = new Aliplayer({ id: 'J_prismPlayer', autoplay: true, playsinline:true, source:newUrl }); } },1000); } player.on("ended", endedHandle);
Kustomisasi tampilan dan komponen pemutar
ApsaraVideo Player SDK untuk Web memungkinkan Anda menyesuaikan tampilan pemutar, seperti skin pemutar, serta menentukan apakah komponen pemutar dan area tampilannya ditampilkan. Komponen tersebut mencakup control bar dan UI error.
Komponen UI control bar
Anda dapat menentukan apakah komponen UI dan area tampilan masing-masing ditampilkan dengan mengatur atribut skinLayout. Untuk informasi lebih lanjut, lihat Konfigurasi skinLayout.
Konfigurasi default ApsaraVideo Player SDK
skinLayout:[ {name: "bigPlayButton", align: "blabs", x: 30, y: 80}, {name: "H5Loading", align: "cc"}, {name: "errorDisplay", align: "tlabs", x: 0, y: 0}, {name: "infoDisplay"}, {name:"tooltip", align:"blabs",x: 0, y: 56}, {name: "thumbnail"}, { name: "controlBar", align: "blabs", x: 0, y: 0, children: [ {name: "progress", align: "blabs", x: 0, y: 44}, {name: "playButton", align: "tl", x: 15, y: 12}, {name: "timeDisplay", align: "tl", x: 10, y: 7}, {name: "fullScreenButton", align: "tr", x: 10, y: 12}, {name:"subtitle", align:"tr",x:15, y:12}, {name:"setting", align:"tr",x:15, y:12}, {name: "volume", align: "tr", x: 5, y: 10} ] } ]
UI error
ApsaraVideo Player SDK untuk Web menyediakan UI error default. Anda juga dapat menyesuaikan UI error dengan salah satu metode berikut. Untuk informasi lebih lanjut, lihat Kustomisasi UI error untuk pemutar HTML5.
Ubah file CSS dari UI error default
Anda dapat menyesuaikan UI error berdasarkan UI error default dengan mengubah file CSS untuk mengatur warna latar belakang, font, posisi, serta menentukan apakah pesan error ditampilkan.
Tentukan UI error baru
Untuk menentukan UI error baru, Anda harus berlangganan event error.
Konfigurasi skin pemutar
Jika UI bawaan ApsaraVideo Player SDK untuk Web tidak memenuhi kebutuhan bisnis Anda, Anda dapat menyesuaikan skin pemutar dengan mengubah file CSS.
Pengaturan skin pemutar web
CatatanUntuk informasi lebih lanjut tentang konfigurasi, lihat file CSS aliplayer-min.css pemutar. Kode contoh berikut menunjukkan cara mengonfigurasi tombol putar besar. Untuk informasi lebih lanjut, lihat Konfigurasi skin pemutar.
.prism-player .prism-big-play-btn { width: 90px; height: 90px; background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -2px -2px; }
Kustomisasi gambar mini video
Setiap video yang diunggah ke ApsaraVideo VOD memiliki gambar mini. ApsaraVideo VOD menyediakan beberapa metode untuk mengubah gambar mini tersebut. Sebelum mengunggah video, Anda dapat menentukan gambar atau tangkapan video sebagai gambar mini. Anda juga dapat mengubah gambar mini setelah video diunggah. Penyesuaian gambar mini video dapat dilakukan dengan salah satu metode berikut:
Konfigurasikan gambar mini video di konsol ApsaraVideo VOD. Untuk informasi lebih lanjut, lihat Atur gambar mini video.
Konfigurasikan gambar mini video dengan mengatur atribut cover pemutar.
var player = new Aliplayer({ "id": "player-con", "source":"//player.alicdn.com/video/aliyunm****.mp4", "cover":"URL Gambar Mini", }, function () { } );
Tangkapan video
ApsaraVideo Player SDK untuk Web versi V2.1.0 dan yang lebih baru mendukung pengambilan snapshot selama pemutaran video. Format output dapat berupa image atau jpeg. Fitur ini harus diaktifkan secara eksplisit. Data snapshot yang dikembalikan mencakup timestamp pemutaran, string Base64, dan data biner gambar.
Aktifkan fitur snapshot
Aktifkan fitur snapshot di pemutar web
PentingAnda tidak dapat mengambil snapshot dari video Flash Video (FLV) yang diputar di Safari. Tombol snapshot tidak muncul meskipun fitur snapshot diaktifkan. Canvas adalah elemen yang mengaktifkan fitur snapshot untuk pemutar web. Anda harus menambahkan header yang mengizinkan Berbagi sumber daya lintas asal (CORS) untuk domain pemutaran. Untuk informasi lebih lanjut, lihat Konfigurasi CORS.
Tambahkan pengaturan UI snapshot ke atribut skinLayout. Kode contoh:
skinLayout:[ {name: "bigPlayButton", align: "blabs", x: 30, y: 80}, { name: "H5Loading", align: "cc" }, {name: "errorDisplay", align: "tlabs", x: 0, y: 0}, {name: "infoDisplay"}, {name:"tooltip", align:"blabs",x: 0, y: 56}, {name: "thumbnail"}, { name: "controlBar", align: "blabs", x: 0, y: 0, children: [ {name: "progress", align: "blabs", x: 0, y: 44}, {name: "playButton", align: "tl", x: 15, y: 12}, {name: "timeDisplay", align: "tl", x: 10, y: 7}, {name: "fullScreenButton", align: "tr", x: 10, y: 12}, {name:"subtitle", align:"tr",x:15, y:12}, {name:"setting", align:"tr",x:15, y:12}, {name: "volume", align: "tr", x: 15, y: 10}, {name: "snapshot", align: "tr", x: 5, y: 12}, ] } ]Untuk mengaktifkan fitur snapshot pada pemutar web, Anda harus mengatur crossOrigin ke anonymous guna mengizinkan permintaan lintas asal anonim. Kode contoh:
extraInfo:{ crossOrigin:"anonymous" }
Atur ukuran dan kualitas snapshot
Gunakan metode setSanpshotProperties(width,height,rate) untuk mengatur ukuran dan kualitas gambar yang diambil. Secara default, snapshot memiliki dimensi yang sama dengan video. Contohnya:
// Atur lebar snapshot menjadi 300, tinggi menjadi 200, dan kualitas menjadi 0,9.
// Tinggi dan lebar snapshot ditampilkan dalam piksel. Anda dapat mengatur kualitas snapshot ke nilai antara 0 hingga 1. Nilai default adalah 1.
player.setSanpshotProperties(300,200,0.9)
Berlangganan event snapshoted
Saat snapshot berhasil diambil, pemutar mengeluarkan event snapshoted yang mencakup data snapshot. Contoh berikut menunjukkan cara mendengarkan event ini:
player.on("snapshoted", function(data) {
console.log(data.paramData.time);
console.log(data.paramData.base64);
console.log(data.paramData.binary);
});
Berikut penjelasan parameter:
time: posisi pemutaran saat snapshot diambil.
-
base64: String Base64 dari snapshot. Anda dapat langsung menggunakan string ini sebagai nilai atribut
srcuntuk tagimg. binary: data biner dari snapshot. Nilai ini dapat digunakan untuk mengunggah gambar.
Watermark snapshot
Anda dapat menambahkan watermark ke snapshot dengan mengatur properti snapshotWatermark. Tabel berikut menjelaskan parameter properti ini.
Parameter | Deskripsi |
left | Jarak antara sisi kiri watermark dan sisi kiri snapshot. |
top | Jarak antara bagian bawah watermark dan bagian atas snapshot. |
text | Teks dalam watermark. |
font |
Atribut teks. Anda dapat memisahkan beberapa atribut dengan spasi. Nilai yang valid:
|
strokeColor | Warna garis tepi. |
fillColor | Warna yang digunakan untuk mengisi bentuk. |
Kode contoh:
snapshotWatermark:{
left:"100",
top:"100",
text:"test",
font:"italic bold 48px SimSun",
strokeColor:"red",
fillColor:'green'
}
Nonaktifkan pencarian pada progress bar
Untuk mencegah pengguna menyeret progress bar guna mengubah posisi pemutaran, sertakan pengaturan disableSeek: true dalam inisialisasi pemutar.
const player = new Aliplayer({
id: "player-con",
disableSeek: true,
source: "https://player.alicdn.com/video/aliyunmedia.mp4",
}, function (player) {
console.log("Pemutar telah dibuat");
}
);
Fitur untuk video panjang
Streaming bitrate adaptif untuk aliran HLS
Untuk mengaktifkan streaming multi-bitrate, atur parameter source ke URL daftar putar utama dan parameter isVBR ke true. Fitur ini memungkinkan pemutar secara otomatis beralih antar level kualitas video berdasarkan kondisi jaringan. Pengguna juga dapat mengganti kualitas secara manual.
Dapatkan URL pemutaran
URL pemutaran video dalam beberapa bitrate tersedia melalui: player._hls.levels[player._hls.currentLevel].
Jika Anda mengatur Quality ke Auto, bitrate saat ini dari aliran video tidak ditampilkan pada pemutar di Safari.
-
Untuk mengaktifkan transkoding multi-bitrate, kemas aliran video HLS menggunakan kelompok template transkoding. Untuk membuat aliran tersebut, buka konsol ApsaraVideo VOD, lalu pilih Configuration Management > Media Processing > Transcoding Template Groups. Untuk informasi selengkapnya, lihat Mengonfigurasi templat pengemasan video atau subtitle.
Kode contoh:
varplayer = newAliplayer({
"id":"player-con",
"source":"URL pemutaran multi-bitrate",
"isVBR":true,
},
function () { }
);Menu pengaturan pemutar menampilkan opsi Quality, seperti Auto(360), yang dapat diklik pengguna untuk mengganti kualitas video.
Konfigurasi subtitle eksternal
ApsaraVideo Player SDK untuk Web mendukung jenis subtitle Web Video Text Tracks (WebVTT) berikut:
-
Subtitle tertanam dalam file HLS (M3U8): Anda dapat memutar video HLS dengan subtitle WebVTT tertanam menggunakan metode pemutaran Vid+PlayAuth atau URL. Anda dapat menghasilkan video HLS menggunakan template pengemasan subtitle di ApsaraVideo VOD.
-
Subtitle eksternal: Anda dapat menambahkan subtitle WebVTT eksternal dengan menggunakan parameter
textTracksatau metodesetTextTracks. Untuk informasi lebih lanjut, lihat Referensi API Aliplayer.

Selain UI default, ApsaraVideo Player SDK untuk Web menyediakan CCService untuk kebutuhan kustom, seperti mengatur bahasa subtitle default berdasarkan bahasa browser. Anda dapat mengakses layanan subtitle melalui properti player._ccService. Layanan ini menyediakan metode berikut:
Nama fungsi | Parameter | Deskripsi |
switch | language | Mengubah bahasa subtitle. |
open | N/A | Mengaktifkan subtitle. |
close | N/A | Menonaktifkan subtitle. |
getCurrentSubtitle | N/A | Mendapatkan bahasa subtitle. |
Kode contoh:
// Ganti bahasa subtitle.
var lang = 'zh-Hans/en-US';
player._ccService.switch(lang);
player._ccService.updateUI(lang); // API tidak memperbarui UI secara default. Anda harus memanggil metode ini secara manual jika diperlukan.
// Aktifkan subtitle.
var result = player._ccService.open();
player._ccService.updateUI(result.language);
// Nonaktifkan subtitle.
player._ccService.close();
player._ccService.updateUI();
Anda dapat menggunakan salah satu metode berikut untuk memodifikasi gaya subtitle:
Metode 1: Gunakan pengaturan cue WebVTT untuk menulis gaya dalam file subtitle. Untuk informasi lebih lanjut, lihat Pengaturan cue WebVTT.
Metode 2: Gunakan CSS untuk memodifikasi gaya subtitle.
Contoh berikut menjelaskan cara mengubah gaya subtitle menjadi teks putih dengan latar belakang hitam.
.prism-cue > div:first-child,
video::cue {
font-size: 14px !important;
color: #000 !important;
background-color: rgba(255, 255, 255, .8) !important; /* Rendering subtitle native di iOS tidak mendukung warna latar belakang. */
}Pemutar memilih solusi yang sesuai antara rendering kustom dan rendering native. Selektor .prism-cue > div:first-child dan video::cue digunakan untuk memastikan bahwa gaya subtitle dapat dimodifikasi dalam kedua solusi tersebut.
Beberapa track audio
Tidak diperlukan konfigurasi manual untuk ApsaraVideo Player SDK untuk Web. Gambar berikut menunjukkan pengaturan track audio.

Beberapa bahasa
Secara default, ApsaraVideo Player SDK untuk Web mendukung bahasa Tiongkok dan Inggris serta secara otomatis beralih antara keduanya berdasarkan pengaturan bahasa browser. SDK ini juga memungkinkan Anda menentukan bahasa kustom. Selain itu, Anda dapat memutar video yang disimpan di wilayah tempat ApsaraVideo VOD tersedia, termasuk Asia Tenggara dan Eropa, berdasarkan ID video dan kredensial pemutaran.
Catatan penggunaan untuk atribut language
Anda dapat mengatur atribut language untuk menentukan bahasa pemutar yang menggantikan pengaturan bahasa browser. Secara default, atribut ini dibiarkan kosong. Kode contoh:
var player = new Aliplayer({
id: "player-con",
source: "",
width: "100%",
height: "500px",
autoplay: true,
language: "en-us",
}, function (player) {
console.log("Pemutar telah dibuat.");
});Buat pemutar dengan elemen UI dalam bahasa Inggris
var player = new Aliplayer({
"id": "player-con",
"source": "",
"language": "en-us" // zh-cn menunjukkan bahasa Tiongkok. en-us menunjukkan bahasa Inggris.
},
function (player) {}
);
Tentukan bahasa kustom untuk pemutar
Untuk mendukung bahasa selain Tiongkok dan Inggris, Anda dapat menggunakan fitur bahasa kustom dengan menentukan sumber daya bahasa melalui atribut languageTexts. Atribut languageTexts adalah objek literal di mana nilai atribut language berfungsi sebagai kunci, dan nilai JSON-nya berisi konten sumber daya yang diterjemahkan untuk bahasa tersebut. Kode berikut memberikan contoh:
Jika Anda tidak yakin sumber daya mana yang harus diterjemahkan, gunakan alat online. Klik untuk membuka alat Pengaturan Online. Di bilah navigasi atas, pilih Advanced > Language. Setelah memilih atau memasukkan kunci bahasa, halaman terjemahan akan muncul. Di halaman ini, Anda dapat menerjemahkan sumber daya ke bahasa target dan kemudian mengirimkannya untuk menghasilkan kode.
var player = new Aliplayer({
"id": "player-con",
"source": "",
"language": "CustomLanguage",// Tentukan bahasa dalam tipe STRING.
"languageTexts":{
"CustomLanguage":{
"Pause":"Pause"
// Parameter lainnya. Untuk informasi lebih lanjut, kunjungi https://player.alicdn.com/lang.json? spm=a2c4g.11186623.0.0.5a746515vnwUSi&file=lang.json
}
}
},
function (player) {}
);
Putar sumber daya video yang disimpan di beberapa wilayah
ApsaraVideo Player SDK untuk Web memungkinkan Anda memutar video yang disimpan di wilayah Tiongkok (Shanghai), Jerman (Frankfurt), dan Singapura. Anda dapat memutar video dengan menggunakan ID video dan kredensial pemutaran atau dengan menggunakan Security Token Service (STS). Pemutar akan mengurai informasi wilayah dan mendapatkan URL pemutaran video di wilayah yang sesuai.
Pemutaran berbasis ID video dan kredensial pemutaran: Pemutar mengurai informasi wilayah dari kredensial pemutaran untuk mendapatkan URL pemutaran video. Dalam kasus ini, Anda tidak perlu menentukan wilayah dalam konfigurasi.
-
Pemutaran berbasis STS: Gunakan properti
regionuntuk menentukan wilayah video. Nilai default adalah'cn-shanghai'. Nilai valid lainnya termasukeu-central-1danap-southeast-1. Contohnya:var player = new Aliplayer({ id: "player-con", width: "100%", height: "500px", autoplay: true, language: "en-us", vid : '1e067a2831b641db90d570b6480f****', accessKeyId: '',// ID AccessKey yang dihasilkan saat token STS sementara dikeluarkan. securityToken: '',// Token STS sementara. Untuk menghasilkan token STS, panggil operasi AssumeRole. accessKeySecret: ''// ID AccessKey yang dihasilkan saat token STS sementara dikeluarkan. region:'eu-central-1',// Wilayah Jerman (Frankfurt). }, function (player) { console.log("Pemutar telah dibuat."); });
Memutar video H.265 dan H.266
Catatan penggunaan
ApsaraVideo Player SDK untuk Web versi V2.14.0 atau yang lebih baru mendukung pemutaran video H.265, sedangkan versi V2.20.2 atau yang lebih baru mendukung pemutaran video H.266. Untuk memutar video H.265, Anda perlu mengajukan permohonan lisensi dan membeli layanan bernilai tambah Pemutaran Video H.265 di Web. Untuk informasi lebih lanjut, lihat Mengelola lisensi.
Untuk informasi lebih lanjut tentang format file audio dan video H.265 dan H.266 yang didukung oleh ApsaraVideo Player SDK untuk Web, lihat Protokol yang didukung.
Sebelum memutar video H.265 dan H.266, perhatikan persyaratan yang dijelaskan dalam tabel berikut.
Item
Deskripsi
Persyaratan lingkungan
Pemutar mengirim permintaan AJAX range untuk mengakses sumber daya video. Browser Anda harus memenuhi persyaratan berikut:
Mendukung permintaan range HTTP. Untuk informasi lebih lanjut, lihat Permintaan range HTTP.
Mendukung metode OPTIONS. Sebelum browser seperti Firefox mengirim permintaan AJAX dengan header range, browser terlebih dahulu mengirim permintaan HTTP OPTIONS.
Kompatibilitas
H.265
Perangkat yang menjalankan iOS 11 atau yang lebih baru mendukung pemutaran video H.265.
Browser tertentu di perangkat Android seperti browser bawaan, browser WeChat, UC Browser, dan QQ Browser mendukung decoding hardware video H.265.
Dukungan untuk decoding software video H.265 pada browser seperti Chrome, Microsoft Edge, dan Firefox bergantung pada apakah browser mendukung API WebAssembly. Untuk informasi lebih lanjut, kunjungi WebAssembly. Jika Anda menggunakan Chrome atau Chromium di perangkat Anda, perbarui Chrome atau Chromium ke versi V74 atau yang lebih baru. WebAssembly tidak dapat berfungsi sebagaimana mestinya pada Chrome dan Chromium versi sebelum V74.
H.266
Tidak ada browser yang secara native mendukung pemutaran video H.266. Dalam kasus ini, decoding software diperlukan untuk memutar video H.266 di browser. Dukungan untuk decoding software video H.266 pada browser bergantung pada apakah browser mendukung API WebAssembly. Untuk informasi lebih lanjut, kunjungi WebAssembly. Jika Anda menggunakan Chrome atau Chromium di perangkat Anda, perbarui Chrome atau Chromium ke versi V74 atau yang lebih baru. WebAssembly tidak dapat berfungsi sebagaimana mestinya pada Chrome dan Chromium versi sebelum V74.
Perangkat yang menjalankan iOS 16.4 atau yang lebih lama dan sebagian besar perangkat Android kelas menengah dan rendah tidak mendukung decoding software video H.266.
Kinerja decoding software
H.265
Anda dapat menggunakan browser di PC untuk memutar video dengan resolusi 2K atau lebih rendah dalam proses multi-thread dan memutar video dengan definisi 1080p atau lebih rendah dalam proses single-thread. Laju frame video tidak boleh melebihi 30 frame per detik (FPS).
Anda dapat menggunakan browser di perangkat seluler untuk memutar video dengan resolusi 720p atau lebih rendah dalam proses single-thread. Laju frame video tidak boleh melebihi 30 FPS. Kinerja decoding software perangkat seluler bervariasi berdasarkan kinerja chip perangkat. Item berikut menjelaskan chip yang mendukung decoding software video dalam proses single-thread. Video beresolusi 720p dan FPS video adalah 30.
Snapdragon 855 atau yang lebih baru
Kirin 820 atau yang lebih baru
Tianjic 800 atau yang lebih baru
H.266
Anda dapat menggunakan browser di PC untuk memutar video dengan resolusi 1080p atau lebih rendah dalam proses multi-thread dan memutar video dengan definisi 720p atau lebih rendah dalam proses single-thread. Laju frame video tidak boleh melebihi 30 FPS.
Anda dapat menggunakan browser di perangkat seluler untuk memutar video dengan resolusi 720p atau lebih rendah dalam proses single-thread. Laju frame video tidak boleh melebihi 30 FPS. Kinerja decoding software perangkat seluler bervariasi berdasarkan kinerja chip perangkat. Item berikut menjelaskan chip yang mendukung decoding software video dalam proses single-thread. Video beresolusi 720p dan FPS video adalah 30.
Snapdragon 855 atau yang lebih baru
Kirin 820 atau yang lebih baru
Integrasikan ApsaraVideo Player SDK untuk Web
Memutar video H.265
<div class="prism-player" id="player-con"></div>
<script>
var options = {
id: "player-con",
source: "//demo.example.com/video/test/h265/test_480p_mp4_h265.mp4",
enableH265: true,
license: {
domain: "example.com",
key: "example-key"
}
}
var player = new Aliplayer(options);
</script>Memutar video H.266
<div class="prism-player" id="player-con"></div>
<script>
var options = {
id: "player-con",
source: "//demo.example.com/video/test/h266/test_480p_mp4_h266.mp4",
enableH266: true,
license: {
domain: "example.com",
key: "example-key"
}
}
var player = new Aliplayer(options);
</script>Parameter | Deskripsi |
id | ID kontainer pemutar. Pastikan ID kontainer tersebut termasuk dalam DOM. |
source | URL pemutaran. Anda dapat menentukan URL video H.264, H.265, atau H.266. |
enableH265/enableH266 | Jika Anda menentukan URL video H.265 atau H.266 untuk parameter source, atur parameter ini ke true. Dalam kasus ini, pemutar memuat sejumlah kecil data untuk mendeteksi codec video dan kemudian menentukan apakah video H.265 atau H.266 dapat diputar di perangkat saat ini. Catatan Setelah Anda mengatur parameter ini ke true, ApsaraVideo Player SDK untuk Web menarik aliran video. Hal ini mengonsumsi trafik dan meningkatkan waktu pemuatan. |
license.domain |
Nama domain yang Anda daftarkan saat mengajukan permohonan lisensi. Misalnya, jika Anda menyematkan ApsaraVideo Player SDK untuk Web di example.com/product/vod, masukkan nama domain situs tersebut, |
license.key | Kunci yang dikeluarkan saat file lisensi dihasilkan. Kunci tersebut adalah string yang terdiri dari 49 karakter. |
Kode contoh berikut menunjukkan cara menentukan URL video dalam beberapa definisi untuk parameter source. Untuk informasi lebih lanjut tentang definisi yang didukung, lihat Pemutaran multi-definisi.
Jika Anda menentukan URL video dalam beberapa definisi untuk parameter source, codec video harus sama. Dalam kasus ini, Anda hanya dapat menentukan URL video H.264, H.265, atau H.266.
{
//... Konfigurasi parameter lainnya.
source: JSON.stringify({
FD: '//h265_fd.mp4',
HD: '//h265_hd.mp4'
}),
}Pilih metode decoding
ApsaraVideo Player SDK untuk Web memilih solusi decoding optimal berdasarkan codec video dan lingkungan browser. Logika berikut berlaku:
Untuk video H.265, pemutar memeriksa kemampuan browser dan memilih metode decoding dalam urutan berikut: pemutaran berdasarkan sumber video > pemutaran berdasarkan Media Source Extensions (MSE) > decoding software menggunakan WebAssembly dan pemutaran menggunakan Canvas. Hal ini memastikan kinerja decoding.
Jika menggunakan WebAssembly untuk decoding software, pemutar akan mengaktifkan pemrosesan multi-thread atau pemrosesan single instruction, multiple data (SIMD) berdasarkan kemampuan browser untuk memberikan kinerja decoding optimal. Untuk informasi lebih lanjut, kunjungi Roadmap.
Gunakan protokol terdegradasi untuk pemutaran
Degradasi pemutaran H.265
Jika video H.265 gagal diputar atau terjadi tersendat selama pemutaran, kami menyarankan Anda mengonfigurasi pesan error untuk memberi tahu pengguna. Anda juga dapat mengatur sistem untuk secara otomatis memutar video H.264 jika video H.265 gagal diputar atau tersendat. Berikut adalah penyebab umum kegagalan pemutaran atau tersendat:
Penyebab 1: Browser Anda tidak mendukung operasi API yang diperlukan untuk decoding software, termasuk WebAssembly, Canvas, dan Web Worker.
Penyebab 2: Decoding video gagal karena kesalahan encoding atau masalah kompatibilitas decoder.
Penyebab 3: Kinerja perangkat keras perangkat Anda buruk sehingga kecepatan decoding software tidak mencukupi untuk pemutaran normal.
Anda dapat mendengarkan event ApsaraVideo Player untuk Web guna mendapatkan informasi tentang error yang terjadi selama pemutaran video H.265.
Dengarkan event error pemutar. Jika kode error dari 4300 hingga 4304 dikembalikan, terjadi error selama pemutaran video H.265 atau H.266. Dalam kasus ini, Penyebab 1 atau Penyebab 2 yang dijelaskan di bagian sebelumnya berlaku.
Dengarkan event h265DecoderOverload pemutar. Jika event tersebut terjadi, Penyebab 3 yang dijelaskan di bagian sebelumnya berlaku.
Kode contoh berikut menunjukkan cara mendengarkan event:
player.on('error', (e) => {
var code = String(e.paramData.error_code);
if (['4300', '4301', '4302', '4303', '4304'].indexOf(code) > -1) {
// Jika API tidak didukung atau terjadi kesalahan decoding, tampilkan pesan atau terapkan fallback.
}
});
player.on('h265DecoderOverload', (e) => {
var data = e.paramData;
// data.decodedFps - Jumlah frame yang didekode per detik saat ini oleh decoder software.
// data.fps - Laju frame video saat ini.
// data.playbackRate - Kecepatan pemutaran saat ini.
// Event ini dipicu jika decodedFps < (fps * playbackRate) berlangsung lebih dari 5 detik.
// Pada titik ini, pemutaran mungkin tersendat, dan Anda harus mempertimbangkan untuk memberi tahu pengguna atau menerapkan fallback.
});
Kode contoh berikut menunjukkan cara mengonfigurasi logika degradasi:
var player;
// Buat pemutar
function createPlayer(_options) {
player && player.dispose();
player = new Aliplayer(_options);
player.on('error', (e) => {
var code = String(e.paramData.error_code);
if (['4300', '4301', '4302', '4303', '4304'].indexOf(code) > -1) {
fallbackTo264(_options)
}
});
player.on('h265DecoderOverload', () => {
// Kami menyarankan menerapkan fallback setelah event ini dipicu dua kali, karena satu kali pemicuan mungkin disebabkan oleh fluktuasi decoding sementara.
fallbackTo264(_options)
})
return player;
}
// Fungsi fallback
function fallbackTo264(_options) {
// Atur source ke URL video fallback H.264.
_options.source = '//h264.mp4';
// Nonaktifkan enableH265 untuk melewati deteksi codec.
_options.enableH265 = false;
createPlayer(_options);
}
// Inisialisasi pemutar
var options = {
id: "player-con",
source: "//h265.mp4",
enableH265: true
}
createPlayer(options)
Degradasi pemutaran H.266
Jika video H.266 gagal diputar atau terjadi tersendat selama pemutaran, kami menyarankan Anda mengonfigurasi pesan error untuk memberi tahu pengguna. Anda juga dapat mengatur sistem untuk secara otomatis memutar video H.264 jika video H.266 gagal diputar atau tersendat. Berikut adalah penyebab umum kegagalan pemutaran atau tersendat:
Penyebab 1: Browser Anda tidak mendukung operasi API yang diperlukan untuk decoding software, termasuk WebAssembly, Canvas, dan Web Worker.
Penyebab 2: Decoding video gagal karena kesalahan encoding atau masalah kompatibilitas decoder.
Anda dapat mendengarkan event ApsaraVideo Player untuk Web guna mendapatkan informasi tentang error yang terjadi selama pemutaran video H.266.
Dengarkan event error pemutar. Jika kode error dari 4300 hingga 4304 dikembalikan, terjadi error selama pemutaran video H.265 atau H.266. Dalam kasus ini, Penyebab 1 atau Penyebab 2 yang dijelaskan di bagian sebelumnya berlaku.
Kode contoh berikut menunjukkan cara mendengarkan event:
player.on('error', (e) => {
var code = String(e.paramData.error_code);
if (['4300', '4301', '4302', '4303', '4304'].indexOf(code) > -1) {
// Beri tahu pengguna atau gunakan protokol terdegradasi untuk pemutaran jika operasi API tidak didukung di browser Anda atau decoding video gagal.
}
}); Kode contoh berikut menunjukkan cara mengonfigurasi logika degradasi:
var player;
// Buat pemutar
function createPlayer(_options) {
player && player.dispose();
player = new Aliplayer(_options);
player.on('error', (e) => {
var code = String(e.paramData.error_code);
if (['4300', '4301', '4302', '4303', '4304'].indexOf(code) > -1) {
fallbackTo264(_options)
}
});
return player;
}
// Fungsi fallback
function fallbackTo264(_options) {
// Atur source ke URL video fallback H.264.
_options.source = '//h264.mp4';
// Nonaktifkan enableH266 untuk melewati deteksi codec.
_options.enableH266 = false;
createPlayer(_options);
}
// Inisialisasi pemutar
var options = {
id: "player-con",
source: "//h266.mp4",
enableH266: true
}
createPlayer(options)
API
Untuk informasi lebih lanjut tentang atribut, metode, dan event yang didukung dalam ApsaraVideo Player SDK untuk Web serta deskripsi dan contohnya, lihat Operasi API. Berikut adalah atribut, metode, dan event yang didukung khusus untuk video H.265 dan H.266:
Atribut yang didukung
source, autoplay, rePlay, preload, cover, width, height, skinLayout, waitingTimeout, vodRetry, keyShortCuts, dan keyFastForwardStep
Metode yang didukung
play, pause, replay, seek, dispose, getCurrentTime, getDuration, getVolume, setVolume, loadByUrl, setPlayerSize, setSpeed, setSanpshotProperties, fullscreenService, getStatus, setRotate, getRotate, setImage, setCover, setProgressMarkers, setPreviewTime, getPreviewTime, dan isPreview
Event yang didukung
ready, play, pause, canplay, playing, ended, hideBar, showBar, waiting, timeupdate, snapshoted, requestFullScreen, cancelFullScreen, error, startSeek, completeSeek, h265PlayInfo, dan h266PlayInfo
CatatanCallback h265PlayInfo dan h266PlayInfo mengembalikan metode pemutaran yang digunakan untuk video H.265 atau H.266. renderType menunjukkan metode pemutaran, simd menunjukkan pemrosesan SIMD, dan wasmThreads menunjukkan pemrosesan multi-thread.
Kode kesalahan
Tabel berikut menjelaskan kode kesalahan yang mungkin dikembalikan untuk error pemutaran H.265 dan H.266. Untuk informasi lebih lanjut tentang kode kesalahan lainnya, lihat Operasi API.
Kode kesalahan | Deskripsi |
4300 | wasm/worker/canvas/audiocontent/webgl tidak didukung. Video H.265 dan H.266 tidak dapat diputar. |
4301 | Terjadi kesalahan penjadwalan internal. |
4302 | Decoding video gagal. |
4303 | Terjadi overload buffer. |
4304 | Format kontainer video bukan MP4. |
Aktifkan pemrosesan multi-thread
Jika Anda menggunakan WebAssembly untuk decoding software, Anda dapat mengaktifkan pemrosesan multi-thread untuk meningkatkan kinerja decoding. SharedArrayBuffer dinonaktifkan di sebagian besar browser utama karena alasan keamanan. Thread WebAssembly bergantung pada SharedArrayBuffer. Anda dapat menggunakan salah satu metode berikut untuk mengaktifkan SharedArrayBuffer.
Jika Anda menggunakan Chrome di PC, daftarkan situs web Anda di halaman Chrome Origin Trials.
Aktifkan isolasi lintas asal untuk browser. Untuk informasi lebih lanjut, lihat Panduan untuk mengaktifkan isolasi lintas asal.
Contoh
Simpan sumber daya yang perlu dimuat seperti gambar, skrip, dan video ke proyek lokal Anda dan kembalikan header permintaan berikut saat sumber daya diakses:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corpSetelah penerapan, verifikasi status isolasi lintas asal dan ketersediaan SharedArrayBuffer di konsol developer browser. Jika self.crossOriginIsolated mengembalikan true dan SharedArrayBuffer mengembalikan fungsi konstruktor native, konfigurasi berhasil.
> self.crossOriginIsolated
< true
> SharedArrayBuffer
< ƒ SharedArrayBuffer() { [native code] }
Setelah lingkungan berhasil diverifikasi, Anda dapat menggunakan pemutar untuk memutar video H.265 atau H.266 dan mendengarkan event h265PlayInfo atau h266PlayInfo. Jika event.paramData.wasmThreads bernilai true, hal ini menunjukkan bahwa pemutar telah mengaktifkan decoding multi-thread. Selain itu, Anda dapat melihat objek H265PlayInfo di konsol dan memastikan bahwa wasmThreads dan simdOption keduanya bernilai true, yang menunjukkan bahwa fitur multi-threading dan SIMD WASM berhasil diaktifkan.
[TEST LOG] [H265PlayInfo]
{
codecTag: "hvc1",
renderType: "wasm",
simd: true,
simdOption: true,
wasmThreads: true,
wasmThreadsOption: true
}
Pergeseran waktu
-
Aktifkan pergeseran waktu
Anda harus mengaktifkan fitur pergeseran waktu di ApsaraVideo Live. Untuk informasi lebih lanjut, lihat Pergeseran waktu.
-
Tabel berikut menjelaskan atribut yang harus Anda atur untuk mengaktifkan pergeseran waktu pada pemutar.
Atribut
Deskripsi
isLive
Atur nilainya ke true.
liveTimeShiftUrl
URL yang digunakan untuk mengkueri informasi pergeseran waktu.
liveStartTime
Waktu mulai siaran langsung.
liveOverTime
Waktu akhir siaran langsung.
liveShiftSource
URL HLS untuk pergeseran waktu.
CatatanAtribut ini hanya diperlukan untuk aliran live FLV.
liveShiftMinOffset
Diperlukan periode waktu tertentu untuk menghasilkan segmen TS selama pergeseran waktu. Jika Anda mencari posisi yang sangat dekat dengan waktu siaran langsung saat ini, segmen TS gagal dihasilkan dan error 404 dilaporkan. Periode waktu minimum harus ditentukan antara posisi pencarian dan waktu siaran langsung saat ini. Anda dapat mengatur parameter ini untuk menentukan periode waktu dalam detik. Nilai default: 30. Segmen dihasilkan setiap 10 detik. Hal ini memastikan bahwa setidaknya ada tiga segmen.
UI pergeseran waktu
UI pergeseran waktu terutama berupa progress bar yang menampilkan waktu di area yang mendukung pergeseran waktu.
CatatanArea waktu menampilkan waktu pemutaran saat ini, waktu akhir siaran langsung, dan waktu siaran langsung saat ini dari kiri ke kanan.
-
Ubah waktu akhir siaran langsung
Selama pemutaran, Anda dapat memanggil metode
liveShiftService.setLiveTimeRangeuntuk menyesuaikan waktu mulai dan waktu akhir siaran langsung. UI akan diperbarui sesuai. Contoh:player.liveShiftSerivce.setLiveTimeRange(""'2018/01/04 20:00:00') FLV untuk siaran langsung dan HLS untuk pergeseran waktu
Untuk mengurangi latensi, kami menyarankan Anda menggunakan FLV untuk siaran langsung dan HLS untuk pergeseran waktu.
Konfigurasi ApsaraVideo Player SDK untuk Web:
source: URL siaran langsung dalam format FLV.
liveShiftSource: URL aliran pergeseran waktu dalam format HLS.
Kode contoh:
{ source:'http://localhost/live****/example.flv', liveShiftSource:'http://localhost/live****/example.m3u8', }
Kustomisasi penerapan
Secara default, sumber daya di ApsaraVideo VOD seperti file JavaScript dan CSS disimpan di Alibaba Cloud CDN. Untuk menerapkan sumber daya ini ke server Anda, ikuti langkah-langkah berikut:
-
Unduh sumber daya untuk ApsaraVideo Player SDK.
Selain dua file utama,
aliplayer-min.jsdanaliplayer-min.css, ApsaraVideo Player SDK untuk Web juga mereferensi file sumber daya lain secara dinamis. Oleh karena itu, Anda harus terlebih dahulu mendapatkan folder sumber daya lengkap.Tautan unduh: apsara-media-box-imp-web-player-dist.tar.gz
Ekstrak paket dan terapkan file-file tersebut.
Ekstrak paket sumber daya dan terapkan semua file dalam folder ke server Anda. Pastikan struktur direktori file tidak diubah.
-
Inisialisasi pemutar di jalur kustom.
Kode contoh berikut menunjukkan URL file CSS dan JavaScript untuk penerapan kustom:
https://player.alicdn.com/assets/skins/default/aliplayer-min.css https://player.alicdn.com/assets/aliplayer-min.jsLakukan langkah-langkah berikut untuk menginisialisasi pemutar:
Referensikan URL file CSS dan JavaScript di bagian atas halaman.
<head> <link rel="stylesheet" href="https://player.alicdn.com/assets/skins/default/aliplayer-min.css" /> <script charset="utf-8" type="text/javascript" src="https://player.alicdn.com/assets/aliplayer-min.js"></script> </head>-
Inisialisasi pemutar dan tentukan parameter
assetPrefix.Parameter
assetPrefixmenentukan awalan untuk alamat penerapan kustom Anda. Jika pemutar digunakan untuk memutar video HLS, pemutar akan mereferensi filehttps://player.alicdn.com/assets/hls/aliplayer-hls2-min.jssecara dinamis. Pastikan file tersebut ditempatkan di alamat yang benar.new Aliplayer({ assetPrefix: 'https://player.alicdn.com/assets' // Tentukan parameter lainnya. })