2017-01-10 3 views
0

장치의 문서 디렉토리로 다운로드 한 비디오를 재생하려고합니다. 웬일인지, 그것은 일어나지 않을 것이다. 여기 iOS의 documentsDirectory에서 비디오를 재생할 수 없습니다.

enter image description here

내 코드입니다 : 내가 할 모든이 상징

let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String 
let videoFileUrl = URL(fileUrlWithPath: documentPath) 
let videoFilePath = videoFileUrl.appendingPathComponent("somVideo.mp4").path 
if FileManager.default.fileExists(atPath: videFilePath){ 
    let player = AVPlayer(url: URL(string: videoFilePath)!) 
    let playerViewController = AVPlayerViewController() 
    playerViewController.player = player 
    self.present(playerViewController, animated: true) { 
     playerViewController.player!.play() 
    } 
} 
else { 
    print("File doesn't exist") 
} 

파일이 위치에 존재 - 나는 시뮬레이터 내 문서 디렉토리를 확인했다 - 그리고 else 문 ISN ' 해고 당했어. 그 밖의 것은 콘솔에 인쇄되지 않습니다.

도움을 주시면 감사하겠습니다.

+2

'videoFileUrl'을 (를)'AVPlayer '에 전달 중입니다. 대신 URL (string : videoFilePath)!를 사용하십시오. 'videoFileUrl'은 문서 디렉토리를 가리키는 반면,'videoFilePath'는 파일 자체를 참조합니다. –

+0

Oups - 오타가되었습니다. 코드를 수정했습니다. –

+0

파일 시스템의 문자열 경로에'URL (string :')을 사용하지 마십시오 **이 초기화 프로그램에서만'file (')을 추가하기 때문에'URL (fileURLWithPath :' : // scheme. URL의 경로에서 URL을 다시 만드는 것은별로 유용하지 않습니다. – vadian

답변

0

OP가 질문에 편집 한 답변입니다 (답변은 답변이어야하므로 이후에 롤백되었습니다). OP가 별도의 답변을 게시하면이 답변을 삭제하겠습니다.


나는 동료 중 한 사람의 도움을 받아 작업 할 수있었습니다. 누구나 관심을 가져야하는 경우 대답은 다음과 같습니다.

let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) 
if let docDir : URL = urls.first { 
    let videoUrl = docDir.appendingPathComponent("\(objectId).mp4") 
    do { 
     let videoExists : Bool = try videoUrl.checkResourceIsReachable() 
     if videoExists { 
      let player = AVPlayer(url: videoUrl) 
      let playerController = AVPlayerViewController() 
      playerController.player = player 
      self.present(playerController, animated: true) { 
       playerController.player!.play() 
      } 
     } 
     else { 
      print("Video doesn't exist") 
     } 
    } 
    catch let error as NSError { 
     print(error) 
    } 
} 
관련 문제