2015-12-16 35 views
6

這是我實施的使用Google Chromecast設備顯示字幕的方式。但小標題不出現。我必須在Chromecast API中進行更改嗎?iOS Sdk Google Chromecast字幕

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媒體]

回答

1

我爲MediaControlChannel調用了錯誤的函數。對於字幕,必須調用一個不同的函數。此功能從未用於Google API文檔或示例代碼中的任何位置。如果Google可以使用文本,音頻和視頻的GCKMediaTrack更新示例項目,那將是非常好的幫助。 此外,發佈一些鑄造字幕流的例子。

繼承人的功能!

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

是否與您合作@Taimur Ajmal? – Bkillnest

+0

是的,它的工作完美。 –

2

在subtitlesTrack分配,嘗試設置的contentType爲 「text/VTT」,而不是 「字幕」。從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) 

還可以看出,上面的代碼不調用setActiveTrackIds,像這樣:

mediaControlChannel?.setActiveTrackIDs([1]) 

該函數調用設置軌道ID爲1到活性。

+0

我想和它仍然沒有工作.. –

+0

更新了我的一些詳細信息,答案 - 看看是否新的解決方案工作。 – Cassie

+0

非常感謝。也試過了。並且它沒有工作:( –

相關問題