2016-07-14 7 views
2

と遊びます。アップロードは正常に機能しているようですが、ビデオのダウンロードを再生できません。保存Firebaseストレージビデオは、ユーザーがFirebaseストレージにメディアをアップロードすることができますアプリを構築AVPlayerViewController

私はAVPlayerをテストするためのアプリにファイルを保存し、それが完璧に動作します。

func handleGesture() { 
    print("handle gesture") 
    if detailMediaType == "Video"{ 
     performSegueWithIdentifier("toVideoView", sender: self) 
     print("video segue called") 
    } 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if(segue.identifier == "toVideoView"){ 

     let path = NSBundle.mainBundle().pathForResource("Apartment Ceiling Collapse- Queens, NY", ofType: "mp4") 
     var movieUrl = NSURL(fileURLWithPath: path!) 
     let filename = getDocumentsDirectory().stringByAppendingPathComponent("movie") 
     let videoData = NSData(contentsOfURL: movieUrl) 
     videoData!.writeToFile(filename, atomically: true) 

     self.avPlayer = AVPlayer(URL: movieUrl) 
     self.avPlayerViewController.player = self.avPlayer 

     self.presentViewController(self.avPlayerViewController, animated: false) {() -> Void in self.avPlayerViewController.player?.play() 

     } 
    } 
} 

編集:私は今、私は黒い画面でAVPlayerViewControllerを取得

FIRStorage.storage().referenceForURL(detailFullsizeUrl).downloadURLWithCompletion { (URL, error) -> Void in 
      if (error != nil) 
      { 
       print(error!) 
      } 
      else 
      { 

       self.firebaseUrl = URL! 

       print("firebaseUrl") 
       print(self.firebaseUrl) 
       self.avPlayer = AVPlayer(URL: self.firebaseUrl) 
       self.avPlayerViewController.player = self.avPlayer 
      } 
     } 

downloadURLWithCompletion

を使用してダウンロードしようとしています。ウェブから「firebaseUrl」にアクセスすると、不器用なようなテキストファイルがダウンロードされます。

解決策: 私のアプローチを変更しました。デバイスに保存しなくなりました。代わりにFirebase Storageオブジェクトから「downloadUrl」メタデータを取得し、AVPlayerViewControllerに直接渡しました。

let avPlayerViewController = AVPlayerViewController() 
var avPlayer:AVPlayer? = nil 

override func viewDidLoad() { 
    super.viewDidLoad() 
     FIRStorage.storage().referenceForURL(detailFullsizeUrl).metadataWithCompletion { (metadata, error) in 
     if error != nil{ 
      print("error getting metadata") 
     } else { 
      let downloadUrl = metadata?.downloadURL() 
      print(downloadUrl) 

      if downloadUrl != nil{ 
       self.avPlayer = AVPlayer(URL: downloadUrl!) 
       self.avPlayerViewController.player = self.avPlayer 
       print("downloadUrl obtained and set") 
      } 
     } 
    } 
} 

func handleGesture() { 
    print("handle gesture") 
    self.presentViewController(self.avPlayerViewController, animated: true) {() -> Void in 
     self.avPlayerViewController.player?.play() 
    } 
} 

答えて

2

質問を確認してください。私はYouTubeの正しい解決策でアップデートしました:YouTube

関連する問題