2017-11-28 11 views
0

イメージピッカーコントローラでビデオを選んで、ドキュメントディレクトリに保存します。私はファイル名を保存しました。それから私がこのビデオをURLで再生しようとしているとき、デバイスはこれを再生できませんが、シミュレータでは非常にうまく再生しています。ここURLで実際のデバイスでビデオを再生できないのはなぜですか?

let fm = FileManager.default 
let docsurl = try! fm.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) 
let path = docsurl.appendingPathComponent(contentName[indexPath.row]+extFull) 

、=ファイルパス:/// VAR /モバイル/コンテナ/データ/アプリケーション/ D9878CE7-0EE5-4F67-8F3F-48772E8BBCCC /ドキュメント/ 2017-11-28_18:57:25.3620.MOV

それから私はこれをプレイしようとしています。コードは次のとおりです。

playVideo(filePath: path) 

var videoPlayer: AVPlayer? 
var avPlayerViewController: AVPlayerViewController? 
var videoView: UIView! 

func playVideo(filePath: URL) { 
    self.videoPlayer = AVPlayer(url: filePath) 
    self.avPlayerViewController = AVPlayerViewController() 
    self.avPlayerViewController?.player = self.videoPlayer 

    videoView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height-53)) 

    self.view.addSubview(videoView) 

    avPlayerViewController?.view.frame = videoView.frame 
    self.addChildViewController(avPlayerViewController!) 
    self.view.addSubview((avPlayerViewController?.view)!) 
} 

avPlayerViewControllerが表示されますが、ビデオがデバイスで再生されないのはなぜですか?

答えて

1

あなたは、ビデオの再生前にパスに存在チェックファイルに持って、

func playVideo(filePath: URL) { 

let fileManager = FileManager.default 

if fileManager.fileExists(atPath: URL) { 
    print("FILE AVAILABLE") 
    self.videoPlayer = AVPlayer(url: filePath) 
    self.avPlayerViewController = AVPlayerViewController() 
    self.avPlayerViewController?.player = self.videoPlayer 

    videoView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height-53)) 

    self.view.addSubview(videoView) 

    avPlayerViewController?.view.frame = videoView.frame 
    self.addChildViewController(avPlayerViewController!) 
    self.view.addSubview((avPlayerViewController?.view)!) 

} else { 
    print("FILE NOT AVAILABLE") 
} 
関連する問題