Parça sayısı

Ses parçaları

Web Alıcı SDK'sı, ses parçası seçimi için parça seçimini basitleştiren ve kolaylaştıran AudioTracksManager sınıfını sunar. Böylece daha fazla kontrol ve ad, URL ve dil gibi özelliklere daha iyi erişim sunar. Bu sınıf, cast.framework.events.EventType.PLAYER_LOAD_COMPLETE etkinliği için etkinlik işleyicide en iyi şekilde kullanılır.

API, etkin ses parçalarını sorgulamak ve seçmek için çeşitli yollar sağlar. Burada, kimliğini belirterek etkin olacak bir parçanın nasıl seçileceğini görebilirsiniz:

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 getActiveTrack() yöntemi de sağlar.

Aşağıda, belirli bir dil için ilk ses parçasının nasıl seçileceğine dair bir örnek verilmiştir (bu örnekte İngilizce):

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 getTracksByLanguage(language) yöntemi de sağlar.

Ses dili kodu medya manifestinden alınır ve RFC 5646 standardına uygun olmalıdır. Dil kodları, 2 karakterli terminolojide (ör. "es", "en" veya "de") veya 4 karakterli terminolojide ("en-us", "es-es" veya "fr-ca") kullanılabilir.

Medya manifesti farklı bir dil kodu standardına uyuyorsa Web Alıcı uygulamasının bunu bir RFC 5646 uyumlu dil koduna dönüştürmesi gerekir. Web Alıcı SDK'sı, modifikasyonlar gerçekleştirmek için EDIT_AUDIO_TRACKS müdahale eden bir araç 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 araları farklı bir dilde olsa bile, aradan sonra reklam gibi herhangi bir ses parçası seçimi (ör. aralıktan önce) devam eder.

Altyazılar

Web Alıcısı SDK'sı, altyazı seçeneği seçimi için parça seçimini basitleştiren ve kolaylaştıran TextTracksManager sınıfını sunar. Böylece ad, URL ve dil gibi özelliklere daha fazla erişim ve erişim sağlayabilirsiniz.

TextTracksManager sınıfı en iyi şekilde, cast.framework.events.EventType.PLAYER_LOAD_COMPLETE etkinliği için etkinlik işleyicide kullanılır.

Web Alıcı SDK'sında altyazı seçimi, SDK'nın diğer bölümleriyle ilişkili olarak basitleştirilmiş ve basitleştirilmiştir.

API; WebVTT, TTML ve CEA-608 kontrolünü destekler.

TextTracksManager sınıfı, etkin bir altyazı parçasını sorgulamak ve seçmek için çeşitli yollar sunar. Burada, kimliğini belirterek etkin olacak ilk kanalı nasıl seçeceğinize 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();

    // 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 getActiveTracks() yöntemi de 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 getTracksByLanguage(language) yöntemi de sağlar.

Metin dili kodu medya manifestinden alınır ve RFC 5646 standardına uygun olmalıdır. Dil kodları, 2 karakterli terminolojide (ör. "es", "en" veya "de") veya 4 karakterli terminolojide ("en-us", "es-es" veya "fr-ca") kullanılabilir.

Medya manifesti farklı bir dil kodu standardına uyuyorsa, Web Alıcı 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ı SDK'sı, istekleri manifest yöneticinizin standardına çevirmesi 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 arası farklı bir dilde olsa bile, aradan sonra dil gibi herhangi bir metin parçası seçimi, aynı içeriğin molasından sonra devam eder.

Zorunlu altyazılar

Zorunlu altyazılar veya zorunlu anlatım, izleyicinin alternatif dil kullanıldığını anlaması veya sesi netleştirmesi için gösterilen metin yer paylaşımıdır. Altyazıların aksine, izleyicinin ses tercihlerine göre otomatik olarak seçildiği için zorunlu altyazıların etkinleştirilmesi gerekmez.

Yayın uygulamanıza zorunlu altyazı eklemek için bunu manifest dosyanızın parçası olarak eklemeniz gerekir. Manifest'inizde parçanın rolünü forced-subtitle olacak şekilde ayarlayın. Cask SDK bu parçaları aldığında parçaları zorunlu altyazı olarak tanımlar. Yayınlama SDK'sı zorunlu altyazıları kapalı altyazılardan ayıracağından, gönderen kişinin herhangi bir işlem yapmasına gerek yoktur. Bu, izleyicinin zorlanan altyazıları seçemeyeceği anlamına gelir.

Altyazılar etkinleştirildiğinde, altyazıların çakışmalarını önlemek için zorunlu altyazılar devre dışı bırakılır. Altyazılar devre dışı bırakıldığında ve manifest dosyasında zorunlu altyazılar sağlandığında, altyazıların görüntülendiği ses dili tercihine göre gösterilir.