我正在爲iOS開發一個應用程序,並且我已經構建了代碼,以便在選擇表格視圖中的一個單元格後,它會繼續播放一個AVPlayerViewController並根據所選單元格行播放本地視頻剪輯。然而,當它進入AVPlayerViewController時,播放器出現,但沒有播放視頻,爲什麼?我甚至爲didSelectAtRow
函數添加了打印語句以確保選擇正確的視頻文件。應該注意的是代碼工作得很好,直到實際播放視頻文件(播放器出現,但只是保持空白)。AVPlayerViewController不播放視頻?
import UIKit
import AVKit
import AVFoundation
class DrillsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var initialRow = Int()
var arrayForKey2 = [[String]]()
var keyIndex = Int()
var headLabel = String()
var labels = Array(trainingDict.keys)
var playerViewController = AVPlayerViewController()
var player = AVPlayer()
var videoURL = [URL]()
var videoUrl = [URL]()
var drillVid = URL(fileURLWithPath: String())
var firstTips = ["Tip 1: Stay Hydrated", "Tip 1: Keep elbow tucked", "x", "Tip 1: Take quick breaks:", "Tip 1: Keep your head up", "Tip 1: Don't cross your feet", "Tip 1: Don't do more than 15 reps"]
@IBOutlet weak var tableView: DrillsTableView!
@IBOutlet weak var drillLabel: UILabel!
@IBOutlet weak var labelBackground: UIView!
@IBAction func back(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
videoURL = [URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/LowDribble.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallBBw:Pound.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallBBw:PickUp.mp4"), URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallBB.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallInOut.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallOverDribble.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallThruHoop.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallThruLeg.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallThruLegLo.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallWiper.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallIOBBCrossCombo.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallIOBetweenLegsCombo.mp4"),URL(fileURLWithPath: "/Users/jordanlagrone/Desktop/BlackHeartBB/BHB DrillVids/OneBallComboFreestyle.mp4")]
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
drillLabel.text = labels[keyIndex]
playerViewController.player = player
for (key, value) in trainingDict {
print("\(key) --> \(value)")
objectArray.append(Objects(sectionName: key, sectionObjects: value))
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! DrillsTableViewCell
if initialRow == 1 {
drillVid = videoURL[indexPath.row]
}
if initialRow == 2 {
drillVid = videoUrl[indexPath.row]
}
print(initialRow)
print(indexPath.row)
print(drillVid)
}
//changes KeysController tip labels accordingly
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Tips" {
if let keysVC = segue.destination as? KeysController {
keysVC.keyTip1 = firstTips[initialRow]
}
if segue.identifier == "playDrill", initialRow == 1 {
if let indexPath = self.tableView.indexPathForSelectedRow {
drillVid = videoURL[indexPath.row]
let destination = segue.destination as! AVPlayerViewController
destination.player = playerViewController.player
playerViewController.player = player
player = AVPlayer(url: drillVid)
player.play()
}
if initialRow == 3 {
if let indexPath = self.tableView.indexPathForSelectedRow {
let video = videoUrl[indexPath.row]
let destination = segue.destination as! AVPlayerViewController
destination.player = AVPlayer(url: video)
destination.player?.play()
}
}
}
}
}
我覺得你的視頻路徑是錯誤的。現在,您的視頻文件路徑是位於桌面上的視頻的位置。您必須將視頻文件添加到您的項目中,然後您必須訪問這些視頻文件。 –
我沒有將文件添加到我的項目 –