2015-12-16 4 views
6

Так я реализовал, чтобы показывать субтитры с помощью устройства Google Chromecast. Но субтитры не отображаются. Нужно ли мне вносить изменения в API Chromecast?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 MEDIA]

ответ

1

Я вызывал неправильную функцию для MediaControlChannel. Для субтитров должна быть вызвана другая функция. Эта функция никогда не использовалась в документации API Google или где-либо в примерах кодов. Было бы здорово помочь, если Google сможет обновить образец проекта, используя GCKMediaTrack для текста, аудио и видео. Кроме того, разместите несколько примеров для потока субтитров.

Heres функция!

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

Это сработало с тобой @ Таймур Аджмал? – Bkillnest

+0

Да, это сработало Отлично. –

2

В поручении subtitlesTrack, попробуйте установить CONTENTTYPE в "текст/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]) 

Вызов этой функции задает трек с идентификатором 1 активным.

+0

Я попытался и все еще не работал .. –

+0

Обновлен мой ответ с дополнительной информацией - посмотрите, работает ли новое решение. – Cassie

+0

Большое спасибо. Пробовал это тоже. и это не сработало :( –

Смежные вопросы