2017-09-16 39 views
0

我正在爲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() 
       } 
      } 
     } 


    } 
} 
+1

我覺得你的視頻路徑是錯誤的。現在,您的視頻文件路徑是位於桌面上的視頻的位置。您必須將視頻文件添加到您的項目中,然後您必須訪問這些視頻文件。 –

+0

我沒有將文件添加到我的項目 –

回答

0

如果您已經添加這些文件到項目中,那麼你必須訪問像下面這些文件:

videoURL = [URL(fileURLWithPath: Bundle.main.path(forResource: "LowDribble", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallBBw:Pound", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallBBw:PickUp", ofType: "mp4")!), URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallBB", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallInOut", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallOverDribble", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallThruHoop", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallThruLeg", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallThruLegLo", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallWiper", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallIOBBCrossCombo", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallIOBetweenLegsCombo", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallComboFreestyle", ofType: "mp4")!)] 

videoUrl = [URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallBBw:Pound", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallBtwLegwPound", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallCrosswPound", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallHiLo", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "OneBallThruHoop", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallIOw:Wiper", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallJuggle", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallInOut", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwoBallWiper", ofType: "mp4")!),URL(fileURLWithPath: Bundle.main.path(forResource: "TwpBallOverDribble", ofType: "mp4")!)] 
+0

感謝您的協助! –

+0

這工作? –

+0

現在我得到一個錯誤,說我打開一個可選的零。有什麼建議麼? –