【问题标题】:Iterating Videos迭代视频
【发布时间】:2019-06-14 18:45:56
【问题描述】:

我试图让播放器遍历引用视频 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 不是在职的。这就是它所说的 2019-06-14 13:08:44.718684-0400 Video[5439:1288491] NSURLConnection 完成错误 - 代码 -1002

【问题讨论】:

标签: swift video avplayer


【解决方案1】:

只声明玩家

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()
    // }
}

【讨论】:

  • 现在它没有给我一个错误但它仍然没有播放视频,我使用了 AVQueuePlayer(items: itemArray) 我想知道并研究它是否需要一个层?
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多