【问题标题】:How to add/use GCKMediaQueue in Swift?如何在 Swift 中添加/使用 GCKMediaQueue?
【发布时间】:2019-08-01 05:46:52
【问题描述】:

所以我设法在 Chromecast 上播放了一个视频。但一次只有一个。我一直在试图弄清楚如何以编程方式添加到队列中。我们的想法是整天播放视频。在“playthisvideo()”下面的代码中,随机返回一个包含 http://.....mp4 的字符串。我查看了谷歌的文档,它要么太模糊,要么我不明白。而且我似乎找不到任何可以引导我遵循的示例。

func castthevideo() {
    let metadata = GCKMediaMetadata()
    metadata.setString("Los Simpsons", forKey: kGCKMetadataKeyTitle)
    metadata.setString ("Barista: ¿Cómo tomas tu café? " +
        " Yo: Muy, muy en serio.",
                        forKey: kGCKMetadataKeySubtitle)
    metadata.addImage(GCKImage(url: URL(string: "https://m.media-amazon.com/images/M/MV5BYjFkMTlkYWUtZWFhNy00M2FmLThiOTYtYTRiYjVlZWYxNmJkXkEyXkFqcGdeQXVyNTAyODkwOQ@@._V1_.jpg")!,
                               width: 480,
                               height: 360))
    let PTV = playthisvideo()
    let url = URL.init(string: PTV)
    print ("******  ", PTV)
    guard let mediaURL = url else {
        print("******  invalid mediaURL")
        return }
    //let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentURL: mediaURL)
    let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentURL: mediaURL)
    mediaInfoBuilder.streamType = GCKMediaStreamType.none;
    mediaInfoBuilder.contentType = "video/mp4"
    mediaInfoBuilder.metadata = metadata;
    let  mediaInformation = mediaInfoBuilder.build()
    if let request = sessionManager.currentSession?.remoteMediaClient?.loadMedia(mediaInformation) { request.delegate = self }

    GCKCastContext.sharedInstance().presentDefaultExpandedMediaControls()

}

func castanthor(byAppending appending: Bool) {

    let PTV = playthisvideo()
    let url = URL.init(string: PTV)
    guard let mediaURL = url else {
        print("invalid mediaURL")
        return
    }

    myNSNumber = (1 as NSNumber)
    if let remoteMediaClient = GCKCastContext.sharedInstance().sessionManager.currentCastSession?.remoteMediaClient {
        let builder = GCKMediaQueueItemBuilder()
        builder.mediaInformation = selectedItem.mediaInfo
        builder.autoplay = true
        builder.preloadTime = 3
        let item = builder.build
        if remoteMediaClient.mediaStatus != nil, appending {
            let request = remoteMediaClient.queueInsert(item(), beforeItemWithID: kGCKMediaQueueInvalidItemID)
            request.delegate = self
        } else {
            let options = GCKMediaQueueLoadOptions()
            options.repeatMode = remoteMediaClient.mediaStatus?.queueRepeatMode ?? .off
            let request = castSession.remoteMediaClient?.queueLoad([item()], with: options)
            request?.delegate = self
        }
    }}

【问题讨论】:

    标签: ios swift google-cast


    【解决方案1】:
    var mediaItems = [GCKMediaQueueItem]()
    var urls = // Array of only audio and videos
    for index in 0..<urls.count {
        let builder = GCKMediaQueueItemBuilder()
        let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentURL: urls[i])
        mediaInfoBuilder.streamType = GCKMediaStreamType.none;
        mediaInfoBuilder.contentType = "video/mp4"
        mediaInfoBuilder.metadata = metadata;
        let mediaInformation = mediaInfoBuilder.build()
        builder.mediaInformation = mediaInformation
        builder.autoplay = true
        builder.preloadTime = 3
        let item = builder.build
        mediaItems.append(item)
    }
    
    if let remoteMediaClient = GCKCastContext.sharedInstance().sessionManager.currentCastSession?.remoteMediaClient {
        let loadOptions = GCKMediaQueueLoadOptions()
        loadOptions.repeatMode = .all
        loadOptions.startPosition = 0
        remoteMediaClient.queueLoadItems(mediaItems, withOptions:loadOptions)
    }
    

    【讨论】:

    • 这很好用,只有两个错误... mediaItems.append(item) 需要 mediaItems.append(items()),我将 contentURL: urls[i] 更改为 contentURL: mediaURL,然后循环了50次。但如果没有@Sachin,我就无法做到
    • 现在一切正常,我已经在 appdelagate 中添加了前跳和后退。这些显示在扩展的控制器上,但显示为灰色。我不太明白,队列中有50个视频,它会一个接一个地播放,但可以跳过一个视频。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多