آهنگ های

آهنگ های صوتی

برای انتخاب تراک صوتی، Web Receiver SDK یک کلاس AudioTracksManager را ارائه می دهد که انتخاب تراک را ساده و ساده می کند و به شما کنترل بیشتر و دسترسی بهتر به ویژگی هایی مانند نام، URL و زبان را می دهد. این کلاس به بهترین وجه در کنترل کننده رویداد برای رویداد cast.framework.events.EventType.PLAYER_LOAD_COMPLETE استفاده می شود.

API راه های مختلفی برای پرس و جو و انتخاب آهنگ های صوتی فعال ارائه می دهد. در اینجا مثالی از نحوه انتخاب یک آهنگ برای فعال بودن با مشخص کردن شناسه آن آورده شده است:

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 همچنین یک متد getActiveTrack() ارائه می دهد.

در اینجا مثالی از نحوه انتخاب اولین آهنگ صوتی برای یک زبان مشخص شده، در این مورد انگلیسی آورده شده است:

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 همچنین یک متد getTracksByLanguage(language) ارائه می‌کند که همه آهنگ‌ها را برای زبان مشخص شده برمی‌گرداند.

کد زبان صوتی از مانیفست رسانه بازیابی شده است و باید از RFC 5646 پیروی کند. کدهای زبان را می توان در نامگذاری 2 کاراکتری (مانند "es"، "en" یا "de")، یا نامگذاری 4 کاراکتری (مانند " en-us، "es-es" یا "fr-ca").

اگر مانیفست رسانه از استاندارد کد زبان دیگری پیروی کند، برنامه گیرنده وب باید آن را به یک کد زبان مطابق با RFC 5646 تبدیل کند. Web Receiver SDK یک رهگیر EDIT_AUDIO_TRACKS برای انجام تغییرات فراهم می کند:

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();

هنگام پخش از طریق وقفه های تبلیغاتی، هر انتخاب آهنگ صوتی، مانند زبان، که قبل از وقفه انجام شده است، پس از وقفه برای همان محتوا باقی می ماند، حتی اگر تبلیغات به زبان دیگری باشد.

زیرنویس‌ها (زیرنویس)

برای انتخاب آهنگ زیرنویس، Web Receiver SDK کلاس TextTracksManager را ارائه می‌کند که انتخاب آهنگ را ساده و ساده می‌کند و به شما کنترل بیشتر و دسترسی بهتر به ویژگی‌هایی مانند نام، URL و زبان می‌دهد.

کلاس TextTracksManager به بهترین وجه در رویداد کنترل کننده رویداد cast.framework.events.EventType.PLAYER_LOAD_COMPLETE استفاده می شود.

انتخاب زیرنویس‌های بسته در Web Receiver SDK ساده شده و با سایر بخش‌های SDK ساده شده است.

API از کنترل WebVTT، TTML و CEA-608 پشتیبانی می کند.

کلاس TextTracksManager راه های مختلفی برای پرس و جو و انتخاب یک تراک شرح بسته برای فعال بودن ارائه می دهد. در اینجا مثالی از نحوه انتخاب اولین آهنگ برای فعال بودن با مشخص کردن شناسه آن آورده شده است:

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 همچنین یک متد getActiveTracks() ارائه می دهد.

در اینجا مثالی از نحوه انتخاب اولین آهنگ متنی برای یک زبان خاص آورده شده است:

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 همچنین یک متد getTracksByLanguage(language) ارائه می‌کند که همه آهنگ‌ها را برای زبان مشخص شده برمی‌گرداند.

کد زبان متن از مانیفست رسانه بازیابی می‌شود و باید از RFC 5646 پیروی کند. کدهای زبان را می‌توان در نام‌گذاری 2 کاراکتری (مانند "es"، "en" یا "de")، یا نام‌گذاری 4 نویسه (مانند نام‌گذاری) ارائه کرد. "en-us"، "es-es" یا "fr-ca").

اگر مانیفست رسانه از استاندارد کد زبان دیگری پیروی کند، برنامه گیرنده وب باید درخواست‌های دریافتی را به آن استاندارد تبدیل کند. این درخواست ها، مانند دستورات صوتی، از کدهای زبان RFC 5646 استفاده می کنند. Web Receiver SDK یک رهگیر EDIT_TRACKS_INFO برای ترجمه درخواست‌ها به استاندارد مانیفست شما ارائه می‌کند:

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 به توسعه‌دهنده اجازه می‌دهد تا به صورت پویا آهنگ‌های زیرنویس جدید را اضافه کند، در این مورد برای زبان‌های مختلف و آهنگ‌های خارج از باند، و سپس یک آهنگ را به عنوان آهنگ فعال جدید انتخاب کند:

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();

هنگام پخش از طریق وقفه های تبلیغاتی، هر انتخاب آهنگ متنی، مانند زبان، که قبل از وقفه انجام شده است، پس از وقفه برای همان محتوا باقی می ماند، حتی اگر تبلیغات به زبان دیگری باشد.

زیرنویس اجباری

زیرنویس‌های اجباری یا روایت اجباری همپوشانی متنی است که نمایش داده می‌شود تا بیننده بتواند بفهمد چه زمانی از زبان جایگزین استفاده می‌شود یا برای شفاف‌سازی صدا. برخلاف زیرنویس‌های بسته، بیننده نیازی به فعال کردن زیرنویس‌های اجباری ندارد، زیرا بر اساس ترجیحات صوتی بیننده به‌طور خودکار انتخاب می‌شوند.

برای افزودن زیرنویس‌های اجباری به برنامه Cast خود، باید آن را به عنوان بخشی از مانیفست خود اضافه کنید. در مانیفست خود، نقش آهنگ را به صورت forced-subtitle . وقتی Cask SDK این آهنگ‌ها را انتخاب می‌کند، آن‌ها را به عنوان زیرنویس‌های اجباری شناسایی می‌کند. نیازی به کار فرستنده نیست زیرا Cast SDK زیرنویس‌های اجباری و زیرنویس‌های بسته را جدا می‌کند. این بدان معناست که بیننده نمی تواند شرح اجباری را انتخاب کند.

وقتی زیرنویس‌های بسته فعال هستند، برای جلوگیری از همپوشانی زیرنویس‌ها، زیرنویس‌های اجباری غیرفعال می‌شوند. وقتی زیرنویس‌های بسته خاموش می‌شوند و زیرنویس‌های اجباری در مانیفست ارائه می‌شوند، زیرنویس‌های اجباری براساس ترجیح زبان صوتی بیننده نمایش داده می‌شوند.