טראקים

טראקים של אודיו

לצורך בחירת טראקים של אודיו, ערכת ה-Web Receiver SDK מספקת סיווג AudioTracksManager שמפשט ומייעל את בחירת הטראק, ומעניק לכם שליטה רבה יותר וגישה טובה יותר לנכסים כמו השם, כתובת ה-URL והשפה. זוהי הדרך הטובה ביותר להשתמש ב-handler של האירוע של האירוע 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').

אם המניפסט של המדיה תואם לסטנדרט שונה של קוד שפה, האפליקציה Web Receiver צריכה להמיר אותו לקוד שפה תואם ל-RFC 5646. Weber 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 הוא ה-handler של האירוע cast.framework.events.EventType.PLAYER_LOAD_COMPLETE.

בחירת כתוביות ב-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").

אם המניפסט של המדיה פועל לפי תקן של קוד שפה אחר, אפליקציית Web Receiver צריכה להמיר את הבקשות הנכנסות לתקן הזה. הבקשות האלה, כמו פקודות קוליות, משתמשות בקודי שפה מסוג 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();

כשמפעילים הפסקות לפרסומות, כל בחירת טקסט, כמו שפה, שמתבצעת לפני ההפסקה, היא תימשך גם אחרי ההפסקה לאותו תוכן, גם אם המודעות יהיו בשפה אחרת.

כתוביות באילוץ

כתוביות מאולצות או נרטיב מאולץ הן שכבות-על של טקסט שמוצגות, כדי שהצופים יוכלו להבין מתי משתמשים בשפה חלופית או כדי להבהיר את האודיו. בשונה מכתוביות, הצופה לא צריך להפעיל כתוביות מאולצות כי הן נבחרות באופן אוטומטי על סמך העדפות האודיו של הצופה.

כדי להוסיף כתוביות מאולצות לאפליקציית ההעברה, צריך לכלול אותן כחלק מהמניפסט. במניפסט שלך, מגדירים את התפקיד של הטראק ל-forced-subtitle. כש-Cask SDK מזהה את הטראקים האלה, הוא מזהה אותם ככתוביות מאולצות. אין צורך בפעולה של שולחים, כי ה-SDK של Cast מפריד בין כתוביות מאולצות לכתוביות. כלומר, לצופה לא תהיה אפשרות לבחור כתוביות מאולצות.

כשהתכונה 'כתוביות' מופעלת, הן מונעות חפיפה בין כתוביות. כאשר הכתוביות מוסתרות ואם כתוביות מאולצות מוצגות במניפסט, הכתוביות מאולצות מוצגות בהתאם להעדפה של שפת האודיו של הצופה.