我正在开发一个iOS应用程序,我希望能够在从表格视图中选择一行时播放本地视频文件。在选择一个单元格行之后,它会转移到应该播放视频的AVPlayerViewController,但是在执行segue并且呈现AVPlayerViewController之后,它包含的AVPlayer保持空白。所有控件都显示但播放器呈现空白。球员没有参加比赛的原因是什么?我已将我的所有视频添加到文件夹中,并将该视频文件夹添加到我的主要包中,因此我不确定为什么播放器不播放视频。任何关于如何让玩家玩和工作的建议将不胜感激。我还在故事板中触发了segue到AVPlayerViewController,并且每次点击一个单元格时都会进行segra。
加载视频的代码:
local_markets
呈现播放器的代码:
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 }
显示AVPlayerViewController的代码,它的播放器应该播放视频,但是没有播放它只是空的:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
drillVid = videoUrl[indexPath.row]
return cell
}
答案 0 :(得分:2)
[URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/TwoBallBBw:Pound.mp4")
不是你如何在你的包中获得文件..
它是let path = Bundle.main.path(forResource: "Pound", ofType: "mp4")
示例:添加"视频"使用.mp4格式的项目。选择视频,然后在右侧面板中,将目标设为您的应用。这会将视频添加到您的Main-Bundle。
在故事板中,添加一个按钮。添加AVPlayerController。控制+单击该按钮并将其拖动到AVPlayerController。
在View Controller代码中,覆盖函数prepareForSegue。获取目的地并设置player
以通过抓住视频路径来播放视频..
代码如下:
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上进行了测试。