Ses parçaları
Web Alıcısı SDK'sı, ses parçası seçimi için parça seçimini basitleştiren ve kolaylaştıran bir AudioTracksManager
sınıfı sağlayarak ad, URL ve dil gibi özelliklere daha fazla erişim ve daha iyi erişim sunar. Bu sınıf en iyi şekilde cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
etkinliğinin etkinlik işleyicisinde kullanılır.
API, etkin ses parçalarını sorgulamak ve seçmek için çeşitli yollar sunar. Aşağıda, bir parçanın kimliğini belirterek etkin olması için nasıl seçim yapılacağı gösterilmektedir:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const audioTracksManager = playerManager.getAudioTracksManager();
// Get all audio tracks
const tracks = audioTracksManager.getTracks();
// Choose the first audio track to be active by specifying its ID
audioTracksManager.setActiveById(tracks[0].trackId);
});
context.start();
AudioTracksManager
sınıfı bir yöntem de getActiveTrack()
sağlar.
Aşağıda, belirli bir dil için (bu örnekte İngilizce) ilk ses parçasının nasıl seçileceğine dair bir örnek verilmiştir:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const audioTracksManager = playerManager.getAudioTracksManager();
// Set the first matching language audio track to be active
audioTracksManager.setActiveByLanguage('en');
});
context.start();
AudioTracksManager
sınıfı, belirtilen dildeki tüm parçaları döndüren bir yöntem de getTracksByLanguage(language)
sağlar.
Ses dili kodu medya manifestinden alınır ve RFC 5646'ya uygun olmalıdır. Dil kodları, 2 karakterli terminolojide (ör. "es", "en" veya "de") veya 4 karakterden oluşan terminolojide ("en-us", "es-es" veya "fr-ca") sunulabilir.
Medya manifesti farklı bir dil kodu standardına uyuyorsa Web Alıcısı uygulamasının bunu bir RFC 5646 uyumlu dil koduna dönüştürmesi gerekir. Web Alıcısı SDK'sı, değişiklikleri yapmak için bir müdahaleci EDIT_AUDIO_TRACKS
sağlar:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Intercept the EDIT_AUDIO_TRACKS request
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.EDIT_AUDIO_TRACKS, request => {
// write logic to convert language codes here
});
context.start();
Reklam araları oynatılırken reklam arası farklı bir dilde olsa bile, bir ara verilmeden önce dil gibi herhangi bir ses parçası seçimi devam eder.
Altyazılar
Web Alıcısı SDK'sı, altyazı seçimini belirlemek için parça seçimini basitleştiren ve kolaylaştıran TextTracksManager
sınıfını sağlayarak size ad, URL ve dil gibi özelliklere daha fazla erişim ve daha iyi erişim sunar.
TextTracksManager
sınıfı en iyi şekilde, cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
etkinliğinin etkinlik işleyicisinde kullanılır.
Web Alıcısı SDK'sında altyazı seçimi, SDK'nın diğer kısımlarıyla kolaylaştırılmış ve basitleştirilmiştir.
API; WebVTT, TTML ve CEA-608'in kontrolünü destekler.
TextTracksManager
sınıfı, etkin olacak altyazı parçasını sorgulamanın ve seçmenin çeşitli yollarını sunar. Aşağıda, etkin olarak kullanılacak ilk parçanın kimliğini belirterek bir örnek verilmiştir:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const textTracksManager = playerManager.getTextTracksManager();
// Get all text tracks
const tracks = textTracksManager.getTracks();
// Choose the first text track to be active by its ID
textTracksManager.setActiveByIds([tracks[0].trackId]);
});
context.start();
TextTracksManager
sınıfı bir yöntem de getActiveTracks()
sağlar.
Aşağıda, belirli bir dil için ilk metin parçasının nasıl seçileceğine dair bir örnek verilmiştir:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const textTracksManager = playerManager.getTextTracksManager();
// Set the first matching language text track to be active
textTracksManager.setActiveByLanguage('en');
});
context.start();
TextTracksManager
sınıfı, belirtilen dildeki tüm parçaları döndüren bir yöntem de getTracksByLanguage(language)
sağlar.
Metin dili kodu medya manifestinden alınır ve RFC 5646'ya uygun olmalıdır. Dil kodları, 2 karakterli terminoloji ("es", "en" veya "de") veya 4 karakterli terminolojide ("en-us", "es-es" veya "fr-ca") sunulabilir.
Medya manifesti farklı bir dil kodu standardına uyuyorsa Web Alıcısı uygulamasının gelen istekleri bu standarda dönüştürmesi gerekir. Sesli komutlar gibi bu istekler RFC 5646 dil kodlarını kullanır. Web Alıcısı SDK'sı, istekleri manifestinizin standardına çevirmek için bir müdahaleci EDIT_TRACKS_INFO
sağlar:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// intercept the EDIT_TRACKS_INFO request
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.EDIT_TRACKS_INFO, request => {
// write logic to convert language codes here
});
context.start();
API, geliştiricilerin farklı diller ve bant dışı parçalar için bu durumda dinamik olarak yeni altyazı parçaları eklemesine ve ardından yeni etkin kanal olarak bir parça seçmesine olanak tanır:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
// Create text tracks object
const textTracksManager = playerManager.getTextTracksManager();
// Create track 1 for English text
const track1 = textTracksManager.createTrack();
track1.trackContentType = 'text/vtt';
track1.trackContentId = 'http://example.com/en.vtt';
track1.language = 'en';
// Create track 2 for Spanish text
const track2 = textTracksManager.createTrack();
const track2Id = track2.trackId;
track2.trackContentType = 'text/vtt';
track2.trackContentId = 'http://example.com/spa.vtt';
track2.language = 'spa';
// Add tracks
textTracksManager.addTracks([track1, track2]);
// Set the first matching language text track to be active
textTracksManager.setActiveByLanguage('en');
});
context.start();
Reklam araları oynatılırken reklam aralarından önce yapılan dil gibi herhangi bir metin parçası seçimi, reklamlar farklı bir dilde olsa bile aranın aynı molasından sonra devam eder.