Bản nhạc

Bản âm thanh

Để lựa chọn bản âm thanh, SDK Web receiver cung cấp AudioTracksManager giúp đơn giản hoá và đơn giản hoá việc lựa chọn bản nhạc, giúp bạn có nhiều quyền kiểm soát hơn và dễ dàng truy cập vào các tài sản như tên, URL và ngôn ngữ. Lớp này là được dùng tốt nhất trong trình xử lý sự kiện cast.framework.events.EventType.PLAYER_LOAD_COMPLETE sự kiện.

API này cung cấp nhiều cách để truy vấn và chọn bản âm thanh đang hoạt động. Ở đây là ví dụ về cách chọn một bản nhạc để hoạt động bằng cách chỉ định mã của bản nhạc đó:

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

Lớp AudioTracksManager cũng cung cấp một phương thức getActiveTrack().

Dưới đây là ví dụ về cách chọn bản âm thanh đầu tiên cho một ngôn ngữ, trong trường hợp này là tiếng Anh:

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

Lớp AudioTracksManager cũng cung cấp một phương thức getTracksByLanguage(language) trả về tất cả các bản nhạc cho ngôn ngữ được chỉ định.

Mã ngôn ngữ âm thanh được truy xuất từ tệp kê khai nội dung đa phương tiện và phải tuân theo RFC 5646. Mã ngôn ngữ có thể được trình bày theo cách gọi 2 ký tự (chẳng hạn như "es", "vi" hoặc "de"), hoặc 4 tên gọi (chẳng hạn như "en-us", "es-es" hoặc "fr-ca").

Nếu tệp kê khai đa phương tiện tuân theo tiêu chuẩn mã ngôn ngữ khác, thì Web Ứng dụng nhận cần chuyển đổi thành mã ngôn ngữ tuân thủ RFC 5646. Web SDK bộ nhận cung cấp một trình chặn EDIT_AUDIO_TRACKS để thực hiện nội dung sửa đổi:

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

Khi phát qua các điểm chèn quảng cáo, mọi lựa chọn bản âm thanh, chẳng hạn như ngôn ngữ được tạo trước khi nghỉ sẽ vẫn tồn tại sau thời gian nghỉ đối với cùng một nội dung, ngay cả khi quảng cáo bằng ngôn ngữ khác.

Phụ đề

Đối với lựa chọn bản phụ đề chi tiết, SDK Web receiver cung cấp TextTracksManager giúp đơn giản hoá và đơn giản hoá việc lựa chọn bản nhạc, giúp bạn có nhiều quyền kiểm soát hơn và dễ dàng truy cập vào các tài sản như tên, URL và ngôn ngữ.

Lớp TextTracksManager được sử dụng tốt nhất trong trình xử lý sự kiện cho cast.framework.events.EventType.PLAYER_LOAD_COMPLETE sự kiện.

Lựa chọn phụ đề trong Web receiver SDK được đơn giản hoá và hợp lý hoá với các phần khác của SDK.

API này hỗ trợ việc kiểm soát WebVTT, TTML và CEA-608.

Lớp TextTracksManager cung cấp nhiều cách để truy vấn và chọn một phụ đề. Đây là ví dụ về cách chọn bản nhạc đầu tiên để hoạt động bằng cách chỉ định ID:

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

Lớp TextTracksManager cũng cung cấp một phương thức getActiveTracks().

Dưới đây là ví dụ về cách chọn đoạn văn bản đầu tiên cho một bản nhạc cụ thể ngôn ngữ:

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

Lớp TextTracksManager cũng cung cấp một phương thức getTracksByLanguage(language) trả về tất cả các bản nhạc cho ngôn ngữ được chỉ định.

Mã ngôn ngữ văn bản được truy xuất từ tệp kê khai nội dung đa phương tiện và phải tuân theo RFC 5646. Mã ngôn ngữ có thể được trình bày theo cách gọi 2 ký tự (chẳng hạn như "es", "vi" hoặc "de") hoặc tên gọi gồm 4 ký tự (chẳng hạn như "en-us", "es-es" hoặc "fr-ca").

Nếu tệp kê khai đa phương tiện tuân theo tiêu chuẩn mã ngôn ngữ khác, thì Web Ứng dụng nhận cần chuyển đổi mọi yêu cầu nhận được sang tiêu chuẩn đó. Các các yêu cầu, chẳng hạn như lệnh thoại, sử dụng mã ngôn ngữ RFC 5646. Trình nhận web SDK cung cấp một trình chặn EDIT_TRACKS_INFO để dịch các yêu cầu sang chuẩn của tệp kê khai:

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 này cho phép nhà phát triển linh động thêm các bản phụ đề mới, theo cách này trường hợp cho các ngôn ngữ khác nhau và bản nhạc ngoài băng tần, sau đó chọn một bản nhạc để là kênh hoạt động mới:

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

Khi phát qua điểm chèn quảng cáo, bất kỳ lựa chọn bản nhạc văn bản nào (chẳng hạn như ngôn ngữ) được thực hiện đối với cùng một nội dung, ngay cả khi quảng cáo ở một ngôn ngữ khác.

Phụ đề bắt buộc

Phụ đề bắt buộc hoặc tường thuật bắt buộc là lớp phủ văn bản được hiển thị để người xem có thể hiểu khi ngôn ngữ thay thế được sử dụng hoặc để làm rõ âm thanh. Không giống như phụ đề, người xem không cần bật phụ đề bắt buộc vì được chọn tự động dựa trên lựa chọn ưu tiên của người xem về âm thanh.

Để thêm phụ đề bắt buộc vào ứng dụng Truyền, bạn cần thêm phụ đề dưới dạng trong tệp kê khai. Trong tệp kê khai, hãy đặt vai trò của kênh forced-subtitle. Khi chọn các kênh này, SDK Cask sẽ xác định chúng dưới dạng phụ đề bắt buộc. Bạn không cần phải làm gì khi gửi vì SDK Truyền sẽ tách riêng phụ đề bắt buộc. Tức là người xem sẽ không có thể chọn một phụ đề bắt buộc.

Khi phụ đề được bật, phụ đề bắt buộc sẽ bị tắt để ngăn phần phụ đề trùng lặp. Khi phụ đề bị tắt và nếu có phụ đề bắt buộc được cung cấp trong tệp kê khai, sau đó phụ đề bắt buộc được hiển thị dựa trên lựa chọn ngôn ngữ ưu tiên cho nội dung âm thanh của người xem.