2015-12-16 14 views
6

So habe ich implementiert, um Untertitel mit einem Google Chromecast-Gerät anzuzeigen. Aber der Untertitel erscheint nicht. Muss ich Änderungen an der Chromecast-API vornehmen?iOS Sdk Google Chromecast Untertitel

var subtitleName:String = "" 
var subtitleLink:String = "" 
var subtitleType:String = "" 
var subtitleCode:String = "" 

if let _ = self.selectedSubtitle 
{ 
    let subtitleIndex: Int = self.selectedSubtitle! - 1 
    subtitleName = self.videoObject.subtitles![subtitleIndex].language! 
    subtitleLink = self.videoObject.subtitles![subtitleIndex].link! 
    subtitleLink = subtitleLink + ".vtt" 

    subtitleType = self.videoObject.subtitles![subtitleIndex].type! 
    subtitleCode = (self.subtitleLanguages.objectAtIndex(subtitleIndex) as! ICFLanguageObject).iso_639_3! as String 

} 

print("\n\nName: \(subtitleName),\n Link:\(subtitleLink) \n Type: \(subtitleType)\n Code: \(subtitleCode)\n\n") 
//Values Printed on console 

//Name: ara, 

//Link:http://a**************c.vtt 

//Type: subtitles 

//Code: ara 



    let subtitlesTrack = GCKMediaTrack(identifier: chromeCast_SubtitleID, 
    contentIdentifier:subtitleLink, 
    contentType: "text/vtt", 
    type: GCKMediaTrackType.Text, 
    textSubtype: GCKMediaTextTrackSubtype.Captions, 
    name: subtitleName, 
    languageCode: subtitleCode, 
    customData: nil) 

// Set Progress 
    let time: Double = duration * (value - minValue)/(maxValue - minValue) 
    let progress: NSTimeInterval = NSString(format: "%f", (time)).doubleValue 


    let textTrackStyle = GCKMediaTextTrackStyle.createDefault() 
    textTrackStyle.foregroundColor = GCKColor(CSSString: "#FF000080") 
    textTrackStyle.fontFamily = "serif" 
    styleChangeRequestID = (mediaControlChannel?.setTextTrackStyle(textTrackStyle))! 
    print(styleChangeRequestID) 

        mediaControlChannel?.setActiveTrackIDs([chromeCast_SubtitleID]) 
        mediaControlChannel?.setTextTrackStyle(textTrackStyle) 
        deviceManager?.setVolume(0.5) 

        let tracks = [subtitlesTrack] 

         let mediaInformation = GCKMediaInformation(
         contentID:self.playbackObject.playbackURL(), 
         streamType: GCKMediaStreamType.None, 
         contentType: self.playbackObject.playbacktype(), 
         metadata: metadata, 
         streamDuration: progress, 
         mediaTracks: tracks, 
         textTrackStyle: textTrackStyle, 
         customData: nil 
        ) 


deviceManager?.setVolume(0.5) 

mediaControlChannel!.loadMedia(mediaInformation, autoplay: true, playPosition: progress) 

// [END MEDIA]

Antwort

1

Ich habe falsche Funktion für MediaControlChannel aufgerufen. Für Untertitel muss eine andere Funktion aufgerufen werden. Diese Funktion wurde nie in der Dokumentation zu Google APIs oder an anderen Stellen in Beispielcodes verwendet. Das wäre großartig, wenn Google ein Beispielprojekt mit GCKMediaTrack für Text, Audio und Videos aktualisieren kann. Posten Sie auch einige Beispiele zum Umwandeln von Untertitel-Streams.

Heres die Funktion!

self.mediaControlChannel!.loadMedia(mediaInformation, autoplay: true, playPosition: 0, activeTrackIDs: tracks) 
+1

hat es mit dir funktioniert @Taimur Ajmal? – Bkillnest

+0

Ja, es hat funktioniert Perfekt. –

2

Im subtitlesTrack Zuordnung Versuchen Sie, content auf "text/VTT", nicht "Untertitel". Aus dem Arbeitsbeispiel Erklärung im iOS Sender Guide,

let captionsTrack = GCKMediaTrack(identifier: 1, contentIdentifier: 
    "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/" + 
    "DesigningForGoogleCast-en.vtt", contentType: "text/vtt", type: GCKMediaTrackType.Text, 
    textSubtype: GCKMediaTextTrackSubtype.Captions, name: "English Captions", 
    languageCode: "en", customData: nil) 

Es scheint auch, dass der Code oben nicht setActiveTrackIds nicht nennen, etwa so:

mediaControlChannel?.setActiveTrackIDs([1]) 

Dieser Funktionsaufruf setzt die Spur mit der ID 1 auf aktiv.

+0

Ich habe versucht und es immer noch nicht funktioniert .. –

+0

Meine Antwort mit einigen weiteren Informationen aktualisiert - sehen, ob die neue Lösung funktioniert. – Cassie

+0

Vielen Dank. Versuchte das auch. und es hat nicht funktioniert :( –

Verwandte Themen