для цикла в быстром шаг за шагом? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующий массив с URL:

let KStorePlayURL = [
    https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/07/19/ATASTEOFDANCE_S1_EP3.mp4,                
    https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/05/23/ATasteOfDance_S1E1_Episode.mp4,                         
    https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/05/23/ATasteOfDance_S1E1_Episode.mp4,
    https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/05/23/ATasteOfDance_S1E1_Episode.mp4
] 

Как я могу получить URL-адреса один за другим в цикле for? Кроме того, когда одно видео воспроизводится и затем другие видео в этом проигрывателе Bitmovin?

Вот код, который я уже пробовал:

@objc func setUpPlayerVideos1() {

   print(KStorePlayURL)

   for i in 0..<KStorePlayURL.count {

      let streamURL = URL(string: KStorePlayURL[i])

      playlist.append(PlaylistItem(url: streamURL!, title: "player"))
      // Create player based with a default configuration
      let player = BitmovinPlayer()

      // Create player view and pass the player instance to it
      let playerView = BMPBitmovinPlayerView(player: player, frame: .zero)

      // Listen to player events
      player.add(listener: self)

      playerView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
      playerView.frame = view.bounds

      view.addSubview(playerView)
      view.bringSubview(toFront: playerView)

      // store the reference to the player
      self.Bitmovinplayer = player

   }
   // Start the playlist
   playNextItem()
}

1 Ответ

0 голосов
/ 29 августа 2018

Вы не должны использовать цикл for, потому что вы будете переопределять игрока в каждой итерации. Что вам нужно сделать, это заполнить playlist, используя цикл for или более функциональный стиль, подобный этому:

KStorePlayURL.forEach { urlString in
    //Make sure that the url address is correct
    guard let streamURL = URL(string: urlString) else {
        fatalError("Error in stream url")
    }
    playlist.append(PlaylistItem(url: streamURL!, title: "player"))
}

Здесь я предполагаю, что KStorePlayURL - это массив строк:

let KStorePlayURL = [
    "https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/07/19/ATASTEOFDANCE_S1_EP3.mp4",
    "https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/05/23/ATasteOfDance_S1E1_Episode.mp4",
    "https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/05/23/ATasteOfDance_S1E1_Episode.mp4",
    "https://source.s3-us-west-2.amazonaws.com/ENVOI/2018/05/23/ATasteOfDance_S1E1_Episode.mp4"
]

Ваш окончательный код должен выглядеть следующим образом:

@objc func setUpPlayerVideos1() {

    KStorePlayURL.forEach { urlString in
        guard let streamURL = URL(string: urlString) else {
            fatalError("Error in stream url")
        }
        playlist.append(PlaylistItem(url: streamURL!, title: "player"))
    }

        let player = BitmovinPlayer()

        // Create player view and pass the player instance to it
        let playerView = BMPBitmovinPlayerView(player: player, frame: .zero)

        // Listen to player events
        player.add(listener: self)

        playerView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        playerView.frame = view.bounds

        view.addSubview(playerView)
        view.bringSubview(toFront: playerView)

        // store the reference to the player
        self.Bitmovinplayer = player

    }
    // Start the playlist
    playNextItem()
}

Вы можете найти полный пример кода для воспроизведения списка воспроизведения с помощью проигрывателя bitmovin здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...