Итерация видео - PullRequest
       6

Итерация видео

0 голосов
/ 14 июня 2019

Я пытаюсь заставить плеер перебирать массив строк, которые ссылаются на URL видео.Я могу заставить его воспроизводить только одно из видео в массиве, если я жестко закодировал его в коде, но я не могу сделать это для итерации.

Я получил возможность воспроизводить одно видео, когда оно жестко запрограммировано, но не повторяется.

   var playerArray = [AVQueuePlayer]()
    var player = AVQueuePlayer()
   // var URLSArray = [URL]()
    var ItemArray = [AVPlayerItem]()

    var videos = ["video1", "video2","video3"]

    var playerController = AVPlayerViewController()




override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let videoNum = (self.videos.count-1)

  //  var URLSArray = [URL]()

 //   for n in 0...videoNum{
 //       let pathString = (Bundle.main.path(forResource: videos[n], ofType: "mov"))
  //      let StrToURL  = NSURL(string: pathString!)
  //      URLSArray.append(StrToURL! as URL)

 //   }

    var ItemArray = [AVPlayerItem]()
 //  var playerController = AVPlayerViewController()

    for n  in 0...videoNum{
        let pathString = (Bundle.main.path(forResource: videos[n], ofType: "mov"))

        //print(pathString!)
        let StrToURL  = URL(string: pathString!)
       // print(StrToURL!)
       // ItemArray = [AVPlayerItem(url: StrToURL!)]
        ItemArray.append(AVPlayerItem(url:StrToURL!))
        print(n)
        print(ItemArray)
       // let player = AVPlayer(playerItem: ItemArray[0])

        player = AVQueuePlayer(items: [ItemArray[n]])


        player.play()
                   }




             //  playerController.player = player
              // present(playerController, animated: true) {
                //   player.play()

    }

Я хочу, чтобы оно закончило воспроизведение одного видео и перешло к следующему видео в массиве.Как бы я ни жестко кодировал видео из массива, оно работает, но если я пытаюсь повторить, оно действует так, как будто URL не работает.Это то, что он говорит

1 Ответ

0 голосов
/ 14 июня 2019

Объявить только проигрыватель

var player = AVQueuePlayer()

В viewDidAppear сопоставить массив строк с URL-адресами в комплекте приложений, а затем с URL-адресами элементов проигрывателя.Затем создайте игрока в очереди и начните играть.

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let videos = ["video1", "video2", "video3"]
    let videoURLs = videos.compactMap{ Bundle.main.url(forResource: $0, withExtension: "mov")}
    let itemArray = videoURLs.map{ AVPlayerItem(url: $0) }

    player = AVQueuePlayer(items: itemArray)
    player.play()

    //  playerController.player = player
    // present(playerController, animated: true) {
    //   player.play()
    // }
}
...