Bản nhạc nội dung nghe nhìn có thể là đối tượng luồng âm thanh hoặc luồng video hoặc đối tượng văn bản (phụ đề) hoặc chú thích).
GCKMediaTrack
đại diện cho một đường đi. Mã này bao gồm một mã nhận dạng duy nhất ở dạng số và
chẳng hạn như Content ID và tiêu đề. Một thực thể GCKMediaTrack
có thể là
được tạo như sau:
let captionsTrack = GCKMediaTrack.init(identifier: 1, contentIdentifier: "https://some-url/caption_en.vtt", contentType: "text/vtt", type: GCKMediaTrackType.text, textSubtype: GCKMediaTextTrackSubtype.captions, name: "English Captions", languageCode: "en", customData: nil)
GCKMediaTrack *captionsTrack = [[GCKMediaTrack alloc] initWithIdentifier:1 contentIdentifier:@"https://some-url/caption_en.vtt" contentType:@"text/vtt" type:GCKMediaTrackTypeText textSubtype:GCKMediaTextTrackSubtypeCaptions name:@"English Captions" languageCode:@"en" customData:nil];
Một mục nội dung đa phương tiện có thể có nhiều bản nhạc; Ví dụ: có thể có nhiều
phụ đề (mỗi phụ đề cho một ngôn ngữ khác nhau) hoặc nhiều luồng âm thanh thay thế
(dành cho các ngôn ngữ khác nhau).
GCKMediaInformation
là lớp đại diện cho một mục nội dung đa phương tiện. Cách liên kết một bộ sưu tập
Đối tượng GCKMediaTrack
với một mục nội dung nghe nhìn, ứng dụng của bạn nên cập nhật
thuộc tính mediaTracks
. Ứng dụng của bạn cần tạo mối liên kết này trước khi tải
phương tiện đến thiết bị nhận, như trong mã sau:
let tracks = [captionsTrack] let url = URL.init(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4") guard let mediaURL = url else { print("invalid mediaURL") return } let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentURL: mediaURL) mediaInfoBuilder.streamType = GCKMediaStreamType.none; mediaInfoBuilder.contentType = "video/mp4" mediaInfoBuilder.metadata = metadata; mediaInfoBuilder.mediaTracks = tracks; mediaInformation = mediaInfoBuilder.build()
NSArray *tracks = @[captionsTrack]; GCKMediaInformationBuilder *mediaInfoBuilder = [[GCKMediaInformationBuilder alloc] initWithContentURL: [NSURL URLWithString:@"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"]]; mediaInfoBuilder.streamType = GCKMediaStreamTypeNone; mediaInfoBuilder.contentType = @"video/mp4"; mediaInfoBuilder.metadata = metadata; mediaInfoBuilder.mediaTracks = tracks; self.mediaInformation = [mediaInfoBuilder build];
Kích hoạt một hoặc nhiều kênh được liên kết với mục nội dung đa phương tiện (sau
đã tải nội dung nghe nhìn) bằng cách gọi -[setActiveTrackIDs:]
trên
GCKRemoteMediaClient
và chuyển mã của các kênh cần kích hoạt. Ví dụ: như sau
sẽ kích hoạt bản phụ đề đã tạo ở trên.
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([1])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[@1]];
Để tắt một bản nhạc trên mục nội dung nghe nhìn hiện tại, hãy gọi
-[setActiveTrackIDs:]
trên
GCKRemoteMediaClient
có một mảng trống hoặc không có gì. Mã sau đây sẽ tắt bản phụ đề.
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[]];
Tạo kiểu cho văn bản
Chiến lược phát hành đĩa đơn
GCKMediaTextTrackStyle
lớp đóng gói thông tin kiểu của văn bản theo dõi. Kiểu bản nhạc có thể là
đã áp dụng cho mục nội dung nghe nhìn đang phát bằng cách gọi
-[GCKRemoteMediaClient
setTextTrackStyle]
.
Kiểu theo dõi được tạo trong mã bên dưới chuyển văn bản thành màu đỏ (FF) với độ mờ 50%
(80) và đặt phông chữ serif.
let textTrackStyle = GCKMediaTextTrackStyle.createDefault() textTrackStyle.foregroundColor = GCKColor.init(cssString: "#FF000080") textTrackStyle.fontFamily = "serif" styleChangeRequest = sessionManager.currentSession?.remoteMediaClient?.setTextTrackStyle(textTrackStyle) styleChangeRequest?.delegate = self
GCKMediaTextTrackStyle *textTrackStyle = [GCKMediaTextTrackStyle createDefault]; [textTrackStyle setForegroundColor:[[GCKColor alloc] initWithCSSString:@"#FF000080"]]; [textTrackStyle setFontFamily:@"serif"]; self.styleChangeRequest = [self.sessionManager.currentSession.remoteMediaClient setTextTrackStyle:textTrackStyle]; self.styleChangeRequest.delegate = self;
Bạn có thể sử dụng hàm được trả về
Đối tượng GCKRequest
cho
theo dõi yêu cầu này.
// MARK: - GCKRequestDelegate func requestDidComplete(_ request: GCKRequest) { if request == styleChangeRequest { print("Style update completed.") styleChangeRequest = nil } }
#pragma mark - GCKRequestDelegate - (void)requestDidComplete:(GCKRequest *)request { if (request == self.styleChangeRequest) { NSLog(@"Style update completed."); self.styleChangeRequest = nil; } }
Xem Thông tin cập nhật về trạng thái
bên dưới để biết thêm thông tin. Ứng dụng phải cho phép người dùng cập nhật kiểu văn bản
theo dõi lượt chuyển đổi thông qua chế độ cài đặt do hệ thống hoặc chính ứng dụng cung cấp.
Bạn có thể truy xuất kiểu mặc định (trong iOS 7 trở lên)
thông qua phương thức tĩnh +[GCKMediaTextTrackStyle
createDefault]
.
Bạn có thể thay đổi các thành phần kiểu theo dõi văn bản sau đây:
- Màu và độ mờ của nền trước (văn bản)
- Màu nền và độ mờ nền
- Loại viền
- Màu viền
- Thang phông chữ
- Họ phông chữ
- Kiểu phông chữ
Nhận thông tin cập nhật về trạng thái
Khi nhiều người gửi được kết nối với cùng một trình nhận, điều quan trọng là để mỗi người gửi biết được những thay đổi ở người nhận ngay cả khi những thay đổi đó nội dung thay đổi đã được bắt đầu từ những người gửi khác.
Để đảm bảo người gửi nhận được thông tin cập nhật trạng thái từ người nhận, ứng dụng của bạn phải
đăng ký một
GCKRemoteMediaClientListener
.
Nếu
GCKMediaTextTrackStyle
thay đổi hiện tại đối với nội dung nghe nhìn, thì tất cả người gửi đã kết nối sẽ nhận được thông báo
thông qua cả
-[remoteMediaClient:didUpdateMediaMetadata:]
và
Lệnh gọi lại -[remoteMediaClient:didUpdateMediaStatus:]
. Trong trường hợp này,
SDK bộ nhận không xác minh liệu kiểu mới có khác với kiểu
trước đó và thông báo cho tất cả những người gửi đã kết nối. Tuy nhiên, nếu
danh sách các kênh đang hoạt động mới được cập nhật, chỉ có
-[remoteMediaClient:didUpdateMediaStatus:]
trong nhóm người gửi được kết nối sẽ là
thông báo.
Đáp ứng các yêu cầu của CORS
Để truyền trực tuyến nội dung nghe nhìn thích ứng, Google Cast yêu cầu phải có tiêu đề CORS, nhưng ngay cả các luồng nội dung nghe nhìn mp4 đơn giản cũng cần CORS nếu có Bản nhạc. Nếu bạn muốn bật Bản nhạc cho mọi nội dung nghe nhìn, bạn phải bật CORS cho cả hai bản nhạc của mình và luồng nội dung đa phương tiện của bạn. Vì vậy, nếu bạn không có sẵn tiêu đề CORS cho nội dung nghe nhìn mp4 đơn giản trên máy chủ của bạn, sau đó bạn thêm phụ đề đơn giản bản nhạc, bạn sẽ không thể phát trực tuyến nội dung nghe nhìn trừ phi bạn cập nhật máy chủ của mình để bao gồm tiêu đề CORS thích hợp. Ngoài ra, bạn cần cho phép ít nhất các tiêu đề sau: Content-Type, Accept-Encoding và Range. Lưu ý rằng hai tiêu đề cuối cùng là các tiêu đề bổ sung mà trước đây bạn có thể chưa cần đến.