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()
}
}