Bu konuda, ApsaraVideo Player SDK for Web'de otomatik oynatma, özel oynatıcı görünümü ve kullanıcı arayüzü ile anlık görüntü yakalama gibi yaygın oynatma kontrol özelliklerinin nasıl kullanılacağı açıklanmaktadır. Ayrıca uzun video senaryolarına uygun özelliklerin kullanımı ve H.265 ile H.266 videolarının nasıl oynatılacağı ele alınmaktadır.
Oynatma kontrolü
Otomatik oynatma
-
autoplay: truedeğerini yapılandırdıktan sonra otomatik oynatma etkinleşmeyebilir. Bunun nedeni, çoğu modern tarayıcının kullanıcı deneyimini bozmamak amacıyla sesli otomatik oynatmayı devre dışı bırakmasıdır.Örneğin, Chrome için Otomatik Oynatma ilkesi aşağıdaki gibidir:
Otomatik oynatmaya her zaman izin verilir ve ses kapatılır.
-
Aşağıdaki senaryolarda sesli otomatik oynatmaya izin verilir:
Kullanıcı web sayfasıyla tıklama veya dokunma gibi bir etkileşimde bulunmuştur.
Kullanıcının bir web sitesindeki video izleme davranışı belirli bir eşiği aşmıştır. Örneğin, kullanıcı sık sık bir web sitesinde video izliyorsa Chrome bu sitede sesli otomatik oynatmaya izin verir. Bu, Chrome'un dahili bir ilkesidir ve programlar tarafından müdahale edilemez.
Kullanıcı bir web sitesini mobil cihazında ana ekrana eklemiş veya masaüstü cihazında İlerici Web Uygulaması (PWA) yüklemiştir.
Bu durumlarda şunları yapabilirsiniz:
Sesli otomatik oynatmayı sessize almak için
mute:truedeğerini yapılandırın. Daha fazla bilgi için bkz. API işlemleri.Önce sesli otomatik oynatmayı denemek ve başarısız olursa sessiz otomatik oynatmaya geçmek için
autoplayPolicy: { fallbackToMute: true }değerini yapılandırın. Daha fazla bilgi için bkz. API işlemleri.
WeChat tarayıcısı gibi bazı tarayıcıların sessiz otomatik oynatmayı da devre dışı bırakabileceğini unutmayın; bu nedenle otomatik oynatmanın her koşulda başarılı olacağını garanti edemeyiz.
Tarayıcıların otomatik oynatma ilkeleri hakkında daha fazla bilgi için Chrome ve Safari belgelerine bakın.
Sürekli oynatma
Sürekli oynatma özelliği, mevcut video bittiğinde sonraki videonun otomatik olarak oynatılmasını sağlar. Bu özellik, oynatma yöntemlerinden, oynatıcıdan ve oynatma senaryolarından etkilenir.
-
URL tabanlı oynatma
ApsaraVideo Player SDK for Web'in
endedolayına abone olması gerekir.endedolayında, sonraki videonun URL'sini parametre olarak kullanarakloadByUrlyöntemini çağırın. Aşağıda bir örnek verilmiştir:function endedHandle() { var newUrl = ""; player.loadByUrl(newUrl); } player.on("ended", endedHandle); -
Video kimliklerine ve oynatma kimlik bilgilerine dayalı oynatma
-
endedolayında,vidve yeni birplayauthdeğeriylereplayByVidAndPlayAuthyöntemini çağırın. Aşağıda bir örnek verilmiştir:function endedHandle() { var newPlayAuth = ""; player.replayByVidAndPlayAuth(vid,newPlayAuth); } player.on("ended", endedHandle);ÖnemliBir
playauthvarsayılan olarak 100 saniye geçerlidir.replayByVidAndPlayAuthyöntemini çağırdığınızda yeni bir oynatma kimlik bilgisi almanız gerekir.
-
-
Video oynatma protokolünü değiştirme
Bir MP4 videosu oynatılıyorsa ve sonraki video HTTP Live Streaming (HLS) protokolünü kullanıyorsa, mevcut video bittikten sonra sonraki video için otomatik oynatmayı etkinleştirmek üzere yeni bir oynatıcı oluşturmanız gerekir. Örnek kod:
function endedHandle() { var newUrl = ""; // Specify the URL of the next video. player.dispose(); // Destroy the existing player. // Create a new player. setTimeout(function(){ player = new Aliplayer({ id: 'J_prismPlayer', autoplay: true, playsinline:true, source:newUrl }); } },1000); } player.on("ended", endedHandle);
Oynatıcının görünümünü ve bileşenlerini özelleştirme
ApsaraVideo Player SDK for Web, oynatıcı görünümünü (oynatıcı teması dahil) özelleştirmenize ve kontrol çubuğu ile hata kullanıcı arayüzü gibi bileşenlerin görüntülenip görüntülenmeyeceğini ve her bileşenin görüntüleme alanını belirtmenize olanak tanır.
-
Kontrol çubuğunun kullanıcı arayüzü bileşenleri
skinLayoutözniteliğini ayarlayarak kullanıcı arayüzü bileşenlerinin görüntülenip görüntülenmeyeceğini ve her bileşenin görüntüleme alanını belirtebilirsiniz. Daha fazla bilgi için bkz. skinLayout yapılandırma.-
ApsaraVideo Player SDK'nin varsayılan yapılandırmaları
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} ] } ]
-
-
Hata kullanıcı arayüzü
ApsaraVideo Player SDK for Web varsayılan bir hata kullanıcı arayüzü sağlar. Aşağıdaki yöntemlerden birini kullanarak hata kullanıcı arayüzünü de özelleştirebilirsiniz. Daha fazla bilgi için bkz. HTML5 oynatıcı için hata kullanıcı arayüzünü özelleştirme.
-
Varsayılan hata kullanıcı arayüzünün CSS dosyasını değiştirme
Varsayılan hata kullanıcı arayüzünü temel alarak hata kullanıcı arayüzünü özelleştirebilirsiniz. Arka plan rengini, yazı tipini ve konumu değiştirmek ve hata iletisinin görüntülenip görüntülenmeyeceğini belirtmek için CSS dosyasını değiştirebilirsiniz.
-
Yeni bir hata kullanıcı arayüzü tanımlama
Yeni bir hata kullanıcı arayüzü tanımlamak için hata olaylarına abone olmanız gerekir.
-
-
Oynatıcı temasını yapılandırma
ApsaraVideo Player SDK for Web tarafından sağlanan kullanıcı arayüzü iş gereksinimlerinizi karşılamıyorsa CSS dosyasını değiştirerek oynatıcı temasını özelleştirebilirsiniz.
NotYapılandırmalar hakkında daha fazla bilgi için oynatıcının aliplayer-min.css CSS dosyasına bakın. Aşağıdaki örnek kod, büyük oynat düğmesinin nasıl yapılandırılacağını gösterir. Daha fazla bilgi için bkz. Oynatıcı temasını yapılandırma.
.prism-player .prism-big-play-btn { width: 90px; height: 90px; background: url("//gw.alicdn.com/tps/TB1YuE3KFXXXXaAXFXXXXXXXXXX-256-512.png") no-repeat -2px -2px; }
Video küçük resmini özelleştirme
ApsaraVideo VOD'a yüklediğiniz her videonun bir küçük resmi vardır. ApsaraVideo VOD, küçük resmi değiştirmeniz için size birden çok yöntem sunar. Bir video yüklemeden önce küçük resim olarak bir görsel veya video anlık görüntüsü belirtebilirsiniz. Video yüklendikten sonra küçük resmi değiştirebilirsiniz. Video küçük resmini aşağıdaki yöntemlerden birini kullanarak özelleştirebilirsiniz:
ApsaraVideo VOD konsolunda video küçük resmini yapılandırın. Daha fazla bilgi için bkz. Video küçük resmini ayarlama.
-
Oynatıcının
coverözniteliğini ayarlayarak video küçük resmini yapılandırın.var player = new Aliplayer({ "id": "player-con", "source":"//player.alicdn.com/video/aliyunm****.mp4", "cover":"Thumbnail URL", }, function () { } );
Video anlık görüntüleri
ApsaraVideo Player SDK for Web V2.1.0 ve sonraki sürümleri, video oynatma sırasında anlık görüntü yakalamayı destekler. Çıktı formatı image veya jpeg olabilir. Bu özelliği açıkça etkinleştirmeniz gerekir. Döndürülen anlık görüntü verileri oynatma zaman damgasını, Base64 dizesini ve görselin ikili verilerini içerir.
Anlık görüntü özelliğini etkinleştirme
-
Web oynatıcıda anlık görüntü özelliğini etkinleştirme
ÖnemliSafari'de oynatılan Flash Video (FLV) videolarından anlık görüntü yakalayamazsınız. Anlık görüntü özelliğini etkinleştirseler bile anlık görüntü düğmesi görünmez. Canvas, web oynatıcı için anlık görüntü özelliğini sağlayan öğedir. Oynatma etki alanı için çapraz kaynak kaynak paylaşımına (CORS) izin veren bir üst bilgi eklemeniz gerekir. Daha fazla bilgi için bkz. CORS yapılandırma.
skinLayoutözniteliğine anlık görüntü kullanıcı arayüzü ayarlarını ekleyin. Örnek kod: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}, ] } ]Web oynatıcı için anlık görüntü özelliğini etkinleştirmek adına, anonim çapraz kaynak isteklerine izin vermek için
crossOrigindeğerinianonymousolarak ayarlamanız gerekir. Örnek kod:extraInfo:{ crossOrigin:"anonymous" }
Anlık görüntü boyutunu ve kalitesini ayarlama
Yakalanan görselin boyutunu ve kalitesini ayarlamak için setSanpshotProperties(width,height,rate) yöntemini kullanın. Varsayılan olarak anlık görüntü, videoyla aynı boyutlara sahiptir. Örnek:
// Set the snapshot width to 300, height to 200, and quality to 0.9.
// The snapshot height and width are displayed in pixels. You can set the snapshot quality to a value ranging from 0 to 1. The default value is 1.
player.setSanpshotProperties(300,200,0.9)
snapshoted olayına abone olma
Bir anlık görüntü başarıyla yakalandığında oynatıcı, anlık görüntü verilerini içeren bir snapshoted olayı yayımlar. Bu olayı dinlemek için aşağıdaki örnek gösterilmiştir:
player.on("snapshoted", function(data) {
console.log(data.paramData.time);
console.log(data.paramData.base64);
console.log(data.paramData.binary);
});
Aşağıdaki öğeler parametreleri açıklar:
time: Anlık görüntünün yakalandığı oynatma konumu.base64: Anlık görüntünün Base64 kodlu dizesi. Bu dizeyi doğrudan birimgetiketininsrcözniteliği değeri olarak kullanabilirsiniz.binary: Anlık görüntünün ikili verileri. Değer, görseli yüklemek için kullanılabilir.
Anlık görüntü filigranı
snapshotWatermark özelliğini ayarlayarak anlık görüntülere filigran ekleyebilirsiniz. Aşağıdaki tabloda bu özelliğin parametreleri açıklanmaktadır.
Parametre | Açıklama |
left | Filigranın sol kenarı ile anlık görüntünün sol kenarı arasındaki mesafe. |
top | Filigranın alt kenarı ile anlık görüntünün üst kenarı arasındaki mesafe. |
text | Filigrandaki metin. |
font |
Metin nitelikleri. Birden çok niteliği boşlukla ayırabilirsiniz. Geçerli değerler:
|
strokeColor | Çizgi rengi. |
fillColor | Şekli doldurmak için kullanılan renk. |
Örnek kod:
snapshotWatermark:{
left:"100",
top:"100",
text:"test",
font:"italic bold 48px SimSun",
strokeColor:"red",
fillColor:'green'
}
İlerleme çubuğunda aramayı devre dışı bırakma
Kullanıcıların oynatma konumunu değiştirmek için ilerleme çubuğunu sürüklemesini önlemek amacıyla oynatıcı başlatma işlemine disableSeek: true ayarını dahil edin.
const player = new Aliplayer({
id: "player-con",
disableSeek: true,
source: "https://player.alicdn.com/video/aliyunmedia.mp4",
}, function (player) {
console.log("The player is created");
}
);
Uzun videolar için özellikler
HLS akışları için uyarlanabilir bit hızı akışı
Çoklu bit hızı akışını etkinleştirmek için source parametresini ana oynatma listesi URL'sine ve isVBR parametresini true değerine ayarlayın. Bu özellik, oynatıcının ağ koşullarına göre video kalite seviyeleri arasında otomatik olarak geçiş yapmasına olanak tanır. Kullanıcılar ayrıca kaliteyi manuel olarak değiştirebilir.
Oynatma URL'sini alma
Birden çok bit hızında bir videonun oynatma URL'sini alın: player._hls.levels[player._hls.currentLevel].
Kalite'yi Otomatik olarak ayarlarsanız Safari'deki oynatıcılarda video akışının mevcut bit hızı görüntülenmez.
Çoklu bit hızı kod dönüştürmeyi etkinleştirmek için HLS video akışlarını bir kod dönüştürme şablon grubu kullanarak paketleyin. Akışları oluşturmak için ApsaraVideo VOD konsoluna gidin ve Configuration Management > Media Processing > Transcoding Template Groups seçeneklerini belirleyin. Daha fazla bilgi için bkz. Video veya altyazı paketleme şablonlarını yapılandırma.
Örnek kod:
varplayer = newAliplayer({
"id":"player-con",
"source":"Multi-bitrate playback URL",
"isVBR":true,
},
function () { }
);
Oynatıcının ayarlar menüsünde, kullanıcıların video kalitesini değiştirmek için tıklayabileceği Auto(360) gibi bir Quality seçeneği görüntülenir.
Harici altyazıları yapılandırma
ApsaraVideo Player SDK for Web'de aşağıdaki Web Video Metin İzleri (WebVTT) altyazı türleri desteklenir:
HLS (M3U8) dosyalarında gömülü altyazılar: Vid+PlayAuth veya URL oynatma yöntemlerini kullanarak gömülü WebVTT altyazılı HLS videolarını oynatabilirsiniz. HLS videoyu ApsaraVideo VOD'daki bir altyazı paketleme şablonu kullanarak oluşturabilirsiniz.
Harici altyazılar:
textTracksparametresini veyasetTextTracksyöntemini kullanarak harici WebVTT altyazıları ekleyebilirsiniz. Daha fazla bilgi için bkz. Aliplayer API Başvurusu.

ApsaraVideo Player SDK for Web, varsayılan kullanıcı arayüzüne ek olarak tarayıcının diline göre varsayılan altyazı dilini ayarlama gibi özel gereksinimler için CCService'i sağlar. Altyazı hizmetine player._ccService özelliği üzerinden erişebilirsiniz. Hizmet aşağıdaki yöntemleri sağlar:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Örnek kod:
// Switch the subtitle language.
var lang = 'zh-Hans/en-US';
player._ccService.switch(lang);
player._ccService.updateUI(lang); // The API does not update the UI by default. You must call this method manually if needed.
// Enable subtitles.
var result = player._ccService.open();
player._ccService.updateUI(result.language);
// Disable subtitles.
player._ccService.close();
player._ccService.updateUI();
Altyazı stilini değiştirmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
Yöntem 1: Stili altyazı dosyasına yazmak için WebVTT ipucu ayarlarını kullanın. Daha fazla bilgi için bkz. WebVTT ipucu ayarları.
Yöntem 2: Altyazı stilini değiştirmek için CSS kullanın.
Aşağıdaki örnek, altyazı stilini siyah arka plan üzerinde beyaz metin olarak değiştirmeyi açıklamaktadır.
.prism-cue > div:first-child,
video::cue {
font-size: 14px !important;
color: #000 !important;
background-color: rgba(255, 255, 255, .8) !important; /* Native subtitle rendering in iOS does not support the background color. */
}
Oynatıcı, özel oluşturma ve yerel oluşturma arasında uygun bir çözüm seçer. .prism-cue > div:first-child ve video::cue seçicileri, her iki çözümde de altyazı stilinin değiştirilebilmesini sağlamak için kullanılır.
Birden çok ses parçası
ApsaraVideo Player SDK for Web için manuel yapılandırma gerekmez. Aşağıdaki şekil ses parçası ayarını göstermektedir.

Birden çok dil
ApsaraVideo Player SDK for Web varsayılan olarak Çince ve İngilizceyi destekler ve tarayıcının dil ayarlarına göre Çince ile İngilizce arasında otomatik olarak geçiş yapar. ApsaraVideo Player SDK for Web özel diller belirtmenize olanak tanır. ApsaraVideo Player SDK for Web, ApsaraVideo VOD'un kullanılabildiği birden çok bölgede video oynatmanıza olanak tanır. Güneydoğu Asya ve Avrupa bölgelerinde depolanan videoları video kimliklerini ve oynatma kimlik bilgilerini kullanarak oynatabilirsiniz.
language özniteliği için kullanım notları
Oynatıcı için tarayıcının dil ayarını geçersiz kılan bir dil belirtmek amacıyla language özniteliğini ayarlayabilirsiniz. Varsayılan olarak bu öznitelik boştur. Örnek kod:
var player = new Aliplayer({
id: "player-con",
source: "",
width: "100%",
height: "500px",
autoplay: true,
language: "en-us",
}, function (player) {
console.log("The player is created.");
});
Kullanıcı arayüzü öğeleri İngilizce olan bir oynatıcı oluşturun
var player = new Aliplayer({
"id": "player-con",
"source": "",
"language": "en-us" // zh-cn indicates Chinese. en-us indicates English.
},
function (player) {}
);
Oynatıcı için özel bir dil belirtin
Çince ve İngilizce dışındaki dilleri desteklemeniz gerektiğinde özel dil özelliğini kullanabilirsiniz. Bunu yapmak için languageTexts özniteliğini kullanarak dil kaynaklarını belirtebilirsiniz. languageTexts özniteliği, language özniteliğinin değerinin anahtar olduğu ve JSON değerinin belirtilen dil için çevrilmiş kaynak içeriği olduğu bir nesne değişmez değeridir. Aşağıdaki kod bir örnek sağlar:
Hangi kaynakları çevireceğinizden emin değilseniz çevrimiçi aracı kullanın. Online Settings aracını açmak için tıklayın. Üst gezinme çubuğunda Advanced > Language seçeneklerini belirleyin. Bir dil anahtarı seçtikten veya girdikten sonra bir çeviri sayfası görüntülenir. Bu sayfada kaynakları hedef dile çevirebilir ve kodu oluşturmak için gönderebilirsiniz.
var player = new Aliplayer({
"id": "player-con",
"source": "",
"language": "CustomLanguage",// Specify a language in the STRING type.
"languageTexts":{
"CustomLanguage":{
"Pause":"Pause"
// Other parameters. For more information, visit https://player.alicdn.com/lang.json? spm=a2c4g.11186623.0.0.5a746515vnwUSi&file=lang.json
}
}
},
function (player) {}
);
Birden çok bölgede depolanan video kaynaklarını oynatın
ApsaraVideo Player SDK for Web, Çin (Şanghay), Almanya (Frankfurt) ve Singapur bölgelerinde depolanan videoları oynatmanıza olanak tanır. Videoları video kimliklerini ve oynatma kimlik bilgilerini kullanarak veya Güvenlik Token Hizmeti'ni (STS) kullanarak oynatabilirsiniz. Oynatıcı bölge bilgilerini ayrıştırır ve ilgili bölgedeki videonun oynatma URL'sini alır.
Video kimliklerine ve oynatma kimlik bilgilerine dayalı oynatma: Oynatıcı, videonun oynatma URL'sini almak için oynatma kimlik bilgisinden bölge bilgilerini ayrıştırır. Bu durumda yapılandırmalarda bölge belirtmeniz gerekmez.
-
STS tabanlı oynatma: Videonun bölgesini belirtmek için
regionözelliğini kullanın. Varsayılan değer'cn-shanghai''dir. Diğer geçerli değerlereu-central-1veap-southeast-1içerir. Örnek:var player = new Aliplayer({ id: "player-con", width: "100%", height: "500px", autoplay: true, language: "en-us", vid : '1e067a2831b641db90d570b6480f****', accessKeyId: '',// The AccessKey ID that is generated when the temporary STS token is issued. securityToken: '',// The temporary STS token. To generate an STS token, call the AssumeRole operation. accessKeySecret: ''// The AccessKey ID that is generated when the temporary STS token is issued. region:'eu-central-1',// The Germany (Frankfurt) region. }, function (player) { console.log("The player is created."); });
H.265 ve H.266 videolarını oynatma
Kullanım notları
ApsaraVideo Player SDK for Web V2.14.0 veya sonraki sürümleri H.265 videolarının oynatılmasını destekler ve ApsaraVideo Player SDK for Web V2.20.2 veya sonraki sürümleri H.266 videolarının oynatılmasını destekler. H.265 videolarını oynatmak için lisans başvurusunda bulunmanız ve Web'de H.265 Videolarının Oynatılması katma değerli hizmetini satın almanız gerekir. Daha fazla bilgi için bkz. Lisansları yönetme.
ApsaraVideo Player SDK for Web kullanarak oynatabileceğiniz H.265 ve H.266 ses ve video dosyalarının biçimleri hakkında daha fazla bilgi için bkz. Desteklenen protokoller.
-
H.265 ve H.266 videolarını oynatmadan önce aşağıdaki tabloda açıklanan gereksinimleri dikkate alın.
Öğe
Açıklama
Ortam gereksinimleri
Oynatıcı, video kaynaklarına erişmek için AJAX aralık istekleri gönderir. Tarayıcınız aşağıdaki gereksinimleri karşılamalıdır:
HTTP aralık isteklerini destekler. Daha fazla bilgi için bkz. HTTP aralık istekleri.
OPTIONS yöntemini destekler. Firefox gibi bir tarayıcı, aralık üst bilgisi içeren bir AJAX isteği göndermeden önce ilk olarak bir HTTP OPTIONS isteği gönderir.
Uyumluluk
H.265
iOS 11 veya sonraki sürümleri çalıştıran cihazlar H.265 videolarının oynatılmasını destekler.
Android cihazlardaki yerleşik tarayıcı, WeChat tarayıcısı, UC Browser ve QQ Browser gibi belirli tarayıcılar H.265 videolarının donanım kod çözümlemesini destekler.
Chrome, Microsoft Edge ve Firefox gibi tarayıcılarda H.265 videolarının yazılım kod çözümlemesi desteği, tarayıcıların WebAssembly API'sini destekleyip desteklemediğine bağlıdır. Daha fazla bilgi için WebAssembly adresini ziyaret edin. Cihazınızda Chrome veya Chromium kullanıyorsanız Chrome veya Chromium'u V74 veya sonraki bir sürüme güncelleyin. WebAssembly, V74'ten önceki Chrome ve Chromium sürümlerinde beklendiği gibi çalışmaz.
H.266
Hiçbir tarayıcı yerel olarak H.266 videolarının oynatılmasını desteklemez. Bu durumda tarayıcılarda H.266 videolarını oynatmak için yazılım kod çözümü gerekir. Tarayıcılarda H.266 videolarının yazılım kod çözümü desteği, tarayıcıların WebAssembly API'sini destekleyip desteklemediğine bağlıdır. Daha fazla bilgi için WebAssembly adresini ziyaret edin. Cihazınızda Chrome veya Chromium kullanıyorsanız Chrome veya Chromium'u V74 veya sonraki bir sürüme güncelleyin. WebAssembly, V74'ten önceki Chrome ve Chromium sürümlerinde beklendiği gibi çalışmaz.
iOS 16.4 veya önceki sürümleri çalıştıran cihazlar ve çoğu orta ve düşük segment Android cihaz H.266 videolarının yazılım kod çözümlemesini desteklemez.
Yazılım kod çözümü performansı
H.265
PC'lerdeki tarayıcıları kullanarak çok iş parçacıklı süreçlerde 2K veya daha düşük çözünürlükteki videoları ve tek iş parçacıklı süreçlerde 1080p veya daha düşük tanımlı videoları oynatabilirsiniz. Videoların kare hızı saniyede 30 kareyi (FPS) aşmamalıdır.
Mobil cihazlardaki tarayıcıları kullanarak tek iş parçacıklı süreçlerde 720p veya daha düşük çözünürlükteki videoları oynatabilirsiniz. Videoların kare hızı saniyede 30 FPS'yi aşmamalıdır. Mobil bir cihazın yazılım kod çözümü performansı cihazın çip performansına göre değişir. Aşağıdaki öğeler, tek iş parçacıklı süreçlerde videoların yazılım kod çözümlemesini destekleyen çipleri açıklar. Videolar 720p çözünürlüğündedir ve videoların FPS değeri 30'dur.
Snapdragon 855 veya sonraki sürümler
Kirin 820 veya sonraki sürümler
Tianjic 800 veya sonraki sürümler
H.266
PC'lerdeki tarayıcıları kullanarak çok iş parçacıklı süreçlerde 1080p veya daha düşük çözünürlükteki videoları ve tek iş parçacıklı süreçlerde 720p veya daha düşük tanımlı videoları oynatabilirsiniz. Videoların kare hızı saniyede 30 FPS'yi aşmamalıdır.
Mobil cihazlardaki tarayıcıları kullanarak tek iş parçacıklı süreçlerde 720p veya daha düşük çözünürlükteki videoları oynatabilirsiniz. Videoların kare hızı saniyede 30 FPS'yi aşmamalıdır. Mobil bir cihazın yazılım kod çözümü performansı cihazın çip performansına göre değişir. Aşağıdaki öğeler, tek iş parçacıklı süreçlerde videoların yazılım kod çözümlemesini destekleyen çipleri açıklar. Videolar 720p çözünürlüğündedir ve videoların FPS değeri 30'dur.
Snapdragon 855 veya sonraki sürümler
Kirin 820 veya sonraki sürümler
ApsaraVideo Player SDK for Web'i entegre etme
H.265 videolarını oynat
<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>
H.266 videolarını oynat
<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>
Parametre | Açıklama |
id | Oynatıcının kapsayıcı kimliği. Kapsayıcı kimliğinin DOM'da bulunduğundan emin olun. |
source | Oynatma URL'si. H.264, H.265 veya H.266 videolarının URL'lerini belirtebilirsiniz. |
enableH265/enableH266 |
Not Bu parametreyi |
license.domain |
Lisans başvurusu sırasında kaydettiğiniz etki alanı adı. Örneğin, ApsaraVideo Player SDK for Web'i example.com/product/vod üzerine gömerseniz sitenin etki alanı adını girin: |
license.key | Lisans dosyası oluşturulurken verilen anahtar. Anahtar 49 karakterlik bir dizedir. |
Aşağıdaki örnek kod, source parametresi için birden çok tanımdaki videoların URL'lerinin nasıl belirtileceğini gösterir. Desteklenen tanımlar hakkında daha fazla bilgi için bkz. Çoklu tanım oynatma.
source parametresi için birden çok tanımdaki videoların URL'lerini belirtirseniz video kodekleri aynı olmalıdır. Bu durumda yalnızca H.264, H.265 veya H.266 videolarının URL'lerini belirtebilirsiniz.
{
//... Configure other parameters.
source: JSON.stringify({
FD: '//h265_fd.mp4',
HD: '//h265_hd.mp4'
}),
}
Kod çözme yöntemi seçme
ApsaraVideo Player SDK for Web, video kodeğine ve tarayıcı ortamına göre en uygun kod çözme çözümünü seçer. Aşağıdaki mantık uygulanır:
H.265 videoları için oynatıcı, tarayıcının yeteneklerini kontrol eder ve kod çözme performansını sağlamak için aşağıdaki sırayla bir kod çözme yöntemi seçer: video kaynağına dayalı oynatma > Media Source Extensions (MSE) tabanlı oynatma > WebAssembly kullanarak yazılım kod çözümü ve Canvas kullanarak oynatma.
Yazılım kod çözümü için WebAssembly kullanıyorsanız oynatıcı, optimum kod çözme performansı sağlamak için tarayıcının yeteneklerine göre çok iş parçacıklı işlemeyi veya tek komut, çoklu veri (SIMD) işlemeyi etkinleştirir. Daha fazla bilgi için Yol Haritası adresini ziyaret edin.
Oynatma için düşürülmüş protokol kullanma
H.265 oynatma düşürme
Bir H.265 videosu oynatılamazsa veya oynatma sırasında takılma oluşursa kullanıcıyı bilgilendirmek için bir hata iletisi yapılandırmanızı öneririz. Ayrıca H.265 videosu oynatılamazsa veya oynatma sırasında takılma oluşursa H.264 videosunun otomatik olarak oynatılacak şekilde ayarlayabilirsiniz. Aşağıdaki bölümde oynatma hatalarının veya takılmanın yaygın nedenleri açıklanmaktadır:
Neden 1: Tarayıcınız WebAssembly, Canvas ve Web Worker dahil olmak üzere yazılım kod çözümü için gereken API işlemlerini desteklemiyor.
Neden 2: Kodlama hataları veya kod çözücü uyumluluk sorunları nedeniyle video kod çözümü başarısız oldu.
Neden 3: Cihazınızın donanım performansı zayıf ve yazılım kod çözme hızı normal oynatma hızıyla eşleşmiyor.
H.265 videolarının oynatılması sırasında oluşan hatalar hakkında bilgi almak için ApsaraVideo Player for Web'in olaylarını dinleyebilirsiniz.
Oynatıcının
errorolayını dinleyin. 4300 ile 4304 arasında bir hata kodu döndürülürse H.265 veya H.266 videolarının oynatılması sırasında bir hata oluştu demektir. Bu durumda yukarıdaki bölümde açıklanan Neden 1 veya Neden 2 geçerlidir.Oynatıcının
h265DecoderOverloadolayını dinleyin. Birh265DecoderOverloadolayı oluşursa yukarıdaki bölümde açıklanan Neden 3 geçerlidir.
Aşağıdaki örnek kod, olayların nasıl dinleneceğini gösterir:
player.on('error', (e) => {
var code = String(e.paramData.error_code);
if (['4300', '4301', '4302', '4303', '4304'].indexOf(code) > -1) {
// If the API is not supported or a decoding error occurs, display a message or implement a fallback.
}
});
player.on('h265DecoderOverload', (e) => {
var data = e.paramData;
// data.decodedFps - The current number of frames decoded per second by the software decoder.
// data.fps - The current frame rate of the video.
// data.playbackRate - The current playback speed.
// This event is triggered if decodedFps < (fps * playbackRate) persists for more than 5 seconds.
// At this point, playback may stutter, and you should consider notifying the user or implementing a fallback.
});
Aşağıdaki örnek kod, bir düşürme mantığının nasıl yapılandırılacağını gösterir:
var player;
// Create a player
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', () => {
// We recommend implementing the fallback after this event is triggered twice, as a single trigger may be due to a temporary decoding fluctuation.
fallbackTo264(_options)
})
return player;
}
// Fallback function
function fallbackTo264(_options) {
// Set the source to the H.264 fallback video URL.
_options.source = '//h264.mp4';
// Disable enableH265 to skip codec detection.
_options.enableH265 = false;
createPlayer(_options);
}
// Initialize the player
var options = {
id: "player-con",
source: "//h265.mp4",
enableH265: true
}
createPlayer(options)
H.266 oynatma düşürme
Bir H.266 videosu oynatılamazsa veya oynatma sırasında takılma oluşursa kullanıcıyı bilgilendirmek için bir hata iletisi yapılandırmanızı öneririz. Ayrıca H.266 videosu oynatılamazsa veya oynatma sırasında takılma oluşursa H.264 videosunun otomatik olarak oynatılacak şekilde ayarlayabilirsiniz. Aşağıdaki bölümde oynatma hatalarının veya takılmanın yaygın nedenleri açıklanmaktadır:
Neden 1: Tarayıcınız WebAssembly, Canvas ve Web Worker dahil olmak üzere yazılım kod çözümü için gereken API işlemlerini desteklemiyor.
Neden 2: Kodlama hataları veya kod çözücü uyumluluk sorunları nedeniyle video kod çözümü başarısız oldu.
H.266 videolarının oynatılması sırasında oluşan hatalar hakkında bilgi almak için ApsaraVideo Player for Web'in olaylarını dinleyebilirsiniz.
Oynatıcının error olayını dinleyin. 4300 ile 4304 arasında bir hata kodu döndürülürse H.265 veya H.266 videolarının oynatılması sırasında bir hata oluştu demektir. Bu durumda yukarıdaki bölümde açıklanan Neden 1 veya Neden 2 geçerlidir.
Aşağıdaki örnek kod, olayların nasıl dinleneceğini gösterir:
player.on('error', (e) => {
var code = String(e.paramData.error_code);
if (['4300', '4301', '4302', '4303', '4304'].indexOf(code) > -1) {
// Notify the user or use a degraded protocol for playback if the API operation is not supported in your browser or video decoding failed.
}
});
Aşağıdaki örnek kod, bir düşürme mantığının nasıl yapılandırılacağını gösterir:
var player;
// Create a player
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;
}
// Fallback function
function fallbackTo264(_options) {
// Set the source to the H.264 fallback video URL.
_options.source = '//h264.mp4';
// Disable enableH266 to skip codec detection.
_options.enableH266 = false;
createPlayer(_options);
}
// Initialize the player
var options = {
id: "player-con",
source: "//h266.mp4",
enableH266: true
}
createPlayer(options)
API
ApsaraVideo Player SDK for Web'de desteklenen nitelikler, yöntemler ve olaylar ile ilgili açıklamalar ve örnekler hakkında daha fazla bilgi için bkz. API işlemleri. Aşağıdaki bölümde H.265 ve H.266 videoları için desteklenen nitelikler, yöntemler ve olaylar açıklanmaktadır:
-
Desteklenen nitelikler
source,autoplay,rePlay,preload,cover,width,height,skinLayout,waitingTimeout,vodRetry,keyShortCutsvekeyFastForwardStep -
Desteklenen yöntemler
play,pause,replay,seek,dispose,getCurrentTime,getDuration,getVolume,setVolume,loadByUrl,setPlayerSize,setSpeed,setSanpshotProperties,fullscreenService,getStatus,setRotate,getRotate,setImage,setCover,setProgressMarkers,setPreviewTime,getPreviewTimeveisPreview -
Desteklenen olaylar
ready,play,pause,canplay,playing,ended,hideBar,showBar,waiting,timeupdate,snapshoted,requestFullScreen,cancelFullScreen,error,startSeek,completeSeek,h265PlayInfoveh266PlayInfoNoth265PlayInfoveh266PlayInfogeri çağırmaları, H.265 veya H.266 videosu için kullanılan oynatma yöntemini döndürür.renderTypeoynatma yöntemini,simdSIMD işlemeyi vewasmThreadsçok iş parçacıklı işlemeyi gösterir.
Hata kodları
Aşağıdaki tabloda H.265 ve H.266 oynatma hataları için döndürülebilecek hata kodları açıklanmaktadır. Diğer hata kodları hakkında daha fazla bilgi için bkz. API işlemleri.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Çok iş parçacıklı işlemeyi etkinleştirme
Yazılım kod çözümü için WebAssembly kullanıyorsanız kod çözme performansını artırmak için çok iş parçacıklı işlemeyi etkinleştirebilirsiniz. SharedArraryBuffer güvenlik nedenleriyle ana akım tarayıcılarda devre dışı bırakılmıştır. WebAssembly iş parçacıkları SharedArraryBuffer'a bağımlıdır. SharedArraryBuffer'ı etkinleştirmek için aşağıdaki yöntemlerden birini kullanabilirsiniz.
PC'nizde Chrome kullanıyorsanız web sitenizi Chrome Origin Trials sayfasında kaydedin.
Tarayıcı için çapraz kaynak izolasyonunu etkinleştirin. Daha fazla bilgi için bkz. Çapraz kaynak izolasyonunu etkinleştirme kılavuzu.
Örnek
Görseller, komut dosyaları ve videolar gibi yüklenmesi gereken kaynakları yerel projenize kaydedin ve kaynaklara erişildiğinde aşağıdaki istek üst bilgilerini döndürün:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Dağıtımdan sonra tarayıcının geliştirici konsolunda çapraz kaynak izolasyon durumunu ve SharedArrayBuffer kullanılabilirliğini doğrulayın. self.crossOriginIsolated değeri true döndürdüğünde ve SharedArrayBuffer yerel oluşturucu işlevini döndürdüğünde yapılandırma başarılı olmuş demektir.
> self.crossOriginIsolated
< true
> SharedArrayBuffer
< ƒ SharedArrayBuffer() { [native code] }
Ortam başarıyla doğrulandıktan sonra oynatıcıyı kullanarak bir H.265 veya H.266 videosu oynatabilir ve h265PlayInfo veya h266PlayInfo olayını dinleyebilirsiniz. event.paramData.wasmThreads değeri true ise oynatıcının çok iş parçacıklı kod çözmeyi etkinleştirdiği anlamına gelir. Ayrıca konsolda H265PlayInfo nesnesini görüntüleyebilir ve hem wasmThreads hem de simdOption değerlerinin true olduğunu onaylayabilirsiniz; bu durum WASM çok iş parçacıklılığı ve SIMD özelliklerinin başarıyla etkinleştirildiğini gösterir.
[TEST LOG] [H265PlayInfo]
{
codecTag: "hvc1",
renderType: "wasm",
simd: true,
simdOption: true,
wasmThreads: true,
wasmThreadsOption: true
}
Zaman kaydırma
-
Zaman kaydırmayı etkinleştirme
ApsaraVideo Live'da zaman kaydırma özelliğini etkinleştirmeniz gerekir. Daha fazla bilgi için bkz. Zaman kaydırma.
-
Aşağıdaki tabloda, bir oynatıcı için zaman kaydırmayı etkinleştirmek üzere ayarlamanız gereken nitelikler açıklanmaktadır.
Nitelik
Açıklama
isLive
Değeri true olarak ayarlayın.
liveTimeShiftUrl
Zaman kaydırma bilgilerini sorgulamak için kullanılan URL.
liveStartTime
Canlı yayının başlangıç zamanı.
liveOverTime
Canlı yayının bitiş zamanı.
liveShiftSource
Zaman kaydırma için kullanılan HLS URL'si.
NotBu nitelik yalnızca FLV canlı yayınları için gereklidir.
liveShiftMinOffset
Zaman kaydırma sırasında TS segmentleri oluşturmak için belirli bir süre gerekir. Mevcut canlı yayın zamanına son derece yakın bir konuma arama yaparsanız TS segmentleri oluşturulamaz ve 404 hatası bildirilir. Arama konumu ile mevcut canlı yayın zamanı arasında minimum bir süre belirtilmelidir. Bu parametreyi saniye cinsinden bir süre belirtmek için ayarlayabilirsiniz. Varsayılan değer: 30. Her 10 saniyede bir segment oluşturulur. Bu, en az üç segmentin var olmasını sağlar.
-
Zaman kaydırma kullanıcı arayüzü
Zaman kaydırma kullanıcı arayüzü esas olarak zaman kaydırmayı destekleyen alanda zamanı görüntüleyen bir ilerleme çubuğudur.
NotZaman alanı soldan sağa doğru mevcut oynatma zamanını, canlı yayının bitiş zamanını ve mevcut canlı yayın zamanını görüntüler.
-
Canlı yayının bitiş zamanını değiştirme
Oynatma sırasında
liveShiftService.setLiveTimeRangeyöntemini çağırarak canlı yayının başlangıç ve bitiş zamanlarını ayarlayabilirsiniz. Kullanıcı arayüzü buna göre güncellenir. Örnek:player.liveShiftSerivce.setLiveTimeRange(""'2018/01/04 20:00:00') -
Canlı yayın için FLV ve zaman kaydırma için HLS
Gecikmeyi azaltmak için canlı yayın için FLV ve zaman kaydırma için HLS kullanmanızı öneririz.
ApsaraVideo Player SDK for Web yapılandırmaları:
source: FLV formatındaki canlı yayın URL'si.liveShiftSource: HLS formatındaki zaman kaydırma akışı URL'si.
Örnek kod:
{ source:'http://localhost/live****/example.flv', liveShiftSource:'http://localhost/live****/example.m3u8', }
Özel dağıtım
Varsayılan olarak JavaScript ve CSS dosyaları gibi ApsaraVideo VOD kaynakları Alibaba Cloud CDN'de depolanır. Bu kaynakları kendi sunucunuza dağıtmak için aşağıdaki adımları uygulayın:
-
ApsaraVideo Player SDK kaynaklarını indirin.
aliplayer-min.jsvealiplayer-min.cssolmak üzere iki ana dosyaya ek olarak ApsaraVideo Player SDK for Web diğer kaynak dosyalarını da dinamik olarak referans alır. Bu nedenle öncelikle tam kaynak klasörünü almanız gerekir.İndirme bağlantısı: apsara-media-box-imp-web-player-dist.tar.gz
-
Paketi açın ve dosyaları dağıtın.
Kaynak paketini açın ve klasördeki tüm dosyaları sunucunuza dağıtın. Dosyaların dizin düzeylerinin değişmediğinden emin olun.
-
Özel bir yolda oynatıcıyı başlatın.
Aşağıdaki örnek kod, özel dağıtım için CSS ve JavaScript dosyalarının URL'lerini gösterir:
https://player.alicdn.com/assets/skins/default/aliplayer-min.css https://player.alicdn.com/assets/aliplayer-min.jsOynatıcıyı başlatmak için aşağıdaki adımları uygulayın:
-
Sayfanın üst kısmında CSS ve JavaScript dosyalarının URL'lerine başvurun.
<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> -
Oynatıcıyı başlatın ve
assetPrefixparametresini belirtin.assetPrefixparametresi özel dağıtım adresiniz için öneki belirtir. Oynatıcı bir HLS videosu oynatmak için kullanılırsahttps://player.alicdn.com/assets/hls/aliplayer-hls2-min.jsdosyasını dinamik olarak referans alır. Dosyanın doğru adreste bulunduğundan emin olun.new Aliplayer({ assetPrefix: 'https://player.alicdn.com/assets' // Specify other parameters. })
-