Ein Medientrack kann ein Audio- oder Videostreamobjekt oder ein Textobjekt (Untertitel) sein. oder Untertitel).
GCKMediaTrack
steht für einen Track. Sie besteht aus einer eindeutigen numerischen Kennung und anderen
wie Content-ID und Titel. Eine GCKMediaTrack
-Instanz kann
wie folgt erstellt:
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];
Ein Medienelement kann mehrere Tracks haben. zum Beispiel mehrere
Untertitel (jeweils für eine andere Sprache) oder mehrere alternative Audiostreams
(für verschiedene Sprachen).
GCKMediaInformation
ist die Klasse, die ein Medienelement darstellt. Um eine Sammlung von
GCKMediaTrack
Objekte
mit einem Medienelement handelt, sollte Ihre App die
mediaTracks
. Ihre App muss diese Verknüpfung herstellen, bevor sie geladen wird
die Medien an den Empfänger zu senden, wie im folgenden Code:
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];
Aktivieren Sie einen oder mehrere Tracks, die mit dem Medienelement verknüpft waren (nach dem
Medien geladen werden, durch Aufrufen von -[setActiveTrackIDs:]
am
GCKRemoteMediaClient
und die IDs der zu aktivierenden Titel übergeben. Beispiel:
aktiviert den oben erstellten Untertiteltrack.
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([1])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[@1]];
Um einen Track im aktuellen Medienelement zu deaktivieren, rufst du auf.
-[setActiveTrackIDs:]
an
GCKRemoteMediaClient
mit einem leeren Array oder null. Der folgende Code deaktiviert den Untertiteltrack.
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[]];
Texttracks bearbeiten
Die
GCKMediaTextTrackStyle
kapselt die Stilinformationen eines Text-Tracks ein. Ein Track-Stil kann
wird auf das aktuell wiedergegebene Medienelement angewendet, indem
-[GCKRemoteMediaClient
setTextTrackStyle]
Der im folgenden Code erstellte Track-Stil wird Text rot (FF) mit 50% Deckkraft.
(80) und legt eine Serifenschrift fest.
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;
Sie können den zurückgegebenen
Objekt GCKRequest
für
Anfrage verfolgen.
// 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; } }
Siehe Statusupdates
unten finden Sie weitere Informationen. Apps sollten es Nutzern ermöglichen, den Stil für Text zu aktualisieren
entweder mithilfe der Systemeinstellungen oder der App selbst.
In iOS 7 und höher steht ein Standardstil zur Verfügung, der abgerufen werden kann.
mithilfe der statischen Methode +[GCKMediaTextTrackStyle
createDefault]
.
Die folgenden Stilelemente für Texttracks können geändert werden:
- Farbe und Deckkraft des Vordergrunds (Text)
- Farbe und Transparenz des Hintergrunds
- Rahmentyp
- Rahmenfarbe
- Schriftgröße
- Schriftfamilie
- Schriftart
Statusupdates erhalten
Wenn mehrere Sender mit demselben Empfänger verbunden sind, ist es wichtig, dass jeder Sender über die Änderungen beim Empfänger informiert ist, auch wenn diese Änderungen wurden von anderen Absendern initiiert.
Damit Ihr Absender Statusupdates vom Empfänger erhält, sollte Ihre App
registrieren
GCKRemoteMediaClientListener
Wenn die
GCKMediaTextTrackStyle
werden alle verbundenen Absender benachrichtigt
über die
-[remoteMediaClient:didUpdateMediaMetadata:]
und die
-[remoteMediaClient:didUpdateMediaStatus:]
-Callbacks In diesem Fall
Das Receiver SDK überprüft nicht, ob sich der neue Stil vom
zurück und benachrichtigt alle verbundenen Absender trotzdem. Wenn jedoch
wird die Liste der aktiven Tracks aktualisiert,
-[remoteMediaClient:didUpdateMediaStatus:]
in verbundenen Absendern wird
benachrichtigt.
CORS-Anforderungen erfüllen
Für adaptives Medienstreaming erfordert Google Cast das Vorhandensein von CORS-Headern, aber auch für einfache MP4-Medien-Streams ist CORS erforderlich, wenn sie Titel enthalten. Wenn Sie Um Tracks für beliebige Medien zu aktivieren, müssen Sie CORS für beide Tracks aktivieren. und Ihre Mediastreams. Wenn keine CORS-Header verfügbar sind, für Ihre einfachen MP4-Medien auf Ihrem Server. Sie fügen dann eine einfache Unterüberschrift müssen Sie Ihren Server aktualisieren, um Ihre Medien zu streamen. um den entsprechenden CORS-Header einzufügen. Darüber hinaus müssen Sie mindestens folgenden Headern: Content-Type, Accept-Encoding und Range. Das Feld Letzte beiden Header sind zusätzliche Header, die Sie zuvor möglicherweise nicht benötigt hatten.