2017-09-16 11 views
0

私はiOS用のアプリケーションを開発しています。テーブルビューのセルが選択されると、AVPlayerViewControllerとセグして、選択されたセル行に応じてローカルビデオクリップを再生するコードを作成しました。しかし、それがAVPlayerViewControllerとセグメンテーションすると、プレーヤーは表示されますが、ビデオは再生されません。これはなぜですか?私はdidSelectAtRow関数にprintステートメントを追加して、正しいビデオファイルが選択されていることを確認しました。実際にビデオファイルを再生する時間が来るまで(プレーヤーは表示されますが、空のままです)、コードはうまく機能します。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

私は今、エラーが発生しています。助言がありますか? –

関連する問題