如何在Swift中添加/使用GCKMediaQueue?

问题描述 投票:1回答:1

所以我设法在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个回答
0
投票
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)
}
© www.soinside.com 2019 - 2024. All rights reserved.