Ios 如何使用URL数组在AVPlayer中播放本地视频?

Ios 如何使用URL数组在AVPlayer中播放本地视频?,ios,url,video,avplayer,avplayerviewcontroller,Ios,Url,Video,Avplayer,Avplayerviewcontroller,我正在开发一个iOS应用程序,我希望在您从表视图中选择一行时能够播放本地视频文件。选择单元格行后,它会转到应在其中播放视频的AVPlayerViewController,但在执行该切换并向AVPlayerViewController显示AVPlayerViewController后,它包含的AVPlayer仍为空。所有控件均显示,但播放机渲染为空白。球员不上场有什么原因吗?我已经将我所有的视频添加到一个文件夹中,并将该文件夹中的视频添加到我的主捆绑包中,因此我不确定播放器为什么不播放这些视频。任

我正在开发一个iOS应用程序,我希望在您从表视图中选择一行时能够播放本地视频文件。选择单元格行后,它会转到应在其中播放视频的AVPlayerViewController,但在执行该切换并向AVPlayerViewController显示AVPlayerViewController后,它包含的AVPlayer仍为空。所有控件均显示,但播放机渲染为空白。球员不上场有什么原因吗?我已经将我所有的视频添加到一个文件夹中,并将该文件夹中的视频添加到我的主捆绑包中,因此我不确定播放器为什么不播放这些视频。任何关于我如何让球员发挥和工作的建议都将不胜感激。我还在故事板中触发了AVPlayerViewController的segue,每次点击一个单元格时,它都会进行segue

加载视频的代码:

 import UIKit
 import AVKit
 import AVFoundation

  class DrillsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {


var playerViewController = AVPlayerViewController()
var player = AVPlayer()
var videoURL = [URL]()
var videoUrl = [URL]()
var drillVid = URL(fileURLWithPath: String())

override func viewDidLoad() {
    super.viewDidLoad()
videoUrl = [URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallBBw:Pound.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallBtwLegwPound.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallCrosswPound.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallHiLo.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallThruHoop.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallIOw:Wiper.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallJuggle.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallInOut.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallWiper.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwpBallOverDribble.mp4")]


    tableView.delegate = self
    tableView.dataSource = self }
播放播放器的代码:

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{

drillVid = videoUrl[indexPath.row]

    return cell
}
显示AVPlayerViewController的代码,其播放器应播放视频,但不播放任何内容,仅为空:

  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  drillVid = videoUrl[indexPath.row]. }


  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {


        if segue.identifier == "playDrill" {
                let destination = segue.destination as! AVPlayerViewController
            if let indexPath = self.tableView.indexPathForSelectedRow {
                    drillVid = videoURL[indexPath.row]
                    let destination = segue.destination as! AVPlayerViewController
                    destination.player = AVPlayer(url: drillVid)
                    destination.player?.play()

                }
                }
[URLfileURLWithPath:/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallBBw:Pound.mp4

这不是您在捆绑包中获取文件的方式

让path=Bundle.main.pathforResource:Pound,类型为mp4

示例:使用.mp4格式将视频添加到项目中。选择该视频,然后在右侧面板中,将目标设置为您的应用程序。这将将视频添加到主捆绑包中

在故事板中,添加一个按钮。添加一个AVPlayerController。Control+单击该按钮并将其拖动到AVPlayerController

在视图控制器代码中,重写函数prepareforsgue。获取其目标并通过抓取视频路径将其播放器设置为播放视频

代码如下所示:

import UIKit
import AVKit
import AVFoundation

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destination = segue.destination as! AVPlayerViewController

        let url = URL(fileURLWithPath: Bundle.main.path(forResource: "Video", ofType: "mp4")!)
        destination.player = AVPlayer(playerItem: AVPlayerItem(url: url))
        destination.player?.play()
    }

}

当你运行代码并按下按钮时,它将播放视频。我自己在iPhone 6S、iOS 11上测试了它。

谢谢你的建议,但这并不能真正帮助解决我的问题。除非这就是播放器不播放的原因?@MarkoCain;你很可能给了视频播放器错误的路径。这会得到正确的播放路径Source和视频播放器将能够播放。好的,谢谢,从来没有说过它没有帮助!我会尝试。我按照你的建议添加了文件,但播放器仍然为空,没有播放任何内容。我没有收到任何错误,只是播放器拒绝播放。@MarkoCain;你做了一些错误的事情。我只是做了一个示例项目来测试它。它工作正常。.