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.