iOS Sdk谷歌Chromecast字幕



这就是我使用谷歌Chromecast设备显示字幕的方式。但是字幕没有出现。我必须在Chromecast API中进行更改吗?

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("nnName: (subtitleName),n Link:(subtitleLink) n Type: (subtitleType)n Code: (subtitleCode)nn")
//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)

//[结束媒体]

在字幕跟踪分配中,尝试将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的曲目设置为活动。

我为MediaControlChannel调用了错误的函数。对于字幕,必须调用不同的函数。此函数从未在GoogleAPI文档中使用过,也从未在示例代码中使用过。如果谷歌能够使用GCKMediaTrack为文本、音频和视频更新示例项目,那将是一个很大的帮助。另外,发布一些字幕流的示例。

这是函数!

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

最新更新