gpt4 book ai didi

swift - 保存 Firebase 存储视频并使用 AVPlayerViewController 播放

转载 作者:搜寻专家 更新时间:2023-10-31 22:59:44 26 4
gpt4 key购买 nike

构建允许用户将媒体上传到 Firebase 存储的应用。上传似乎工作正常,但我无法播放下载的视频。

我将文件保存到应用程序以测试 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()

}
}
}

编辑:我现在正在尝试使用 downloadURLWithCompletion 下载

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

我得到一个黑屏的 AVPlayerViewController。当我从网络访问“firebaseUrl”时,它会下载一个看起来像乱码的文本文件。

解决方案:改变了我的方法。不再保存到设备。相反,我从 Firebase 存储对象中获取了“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()
}
}

最佳答案

请检查问题。我使用在 YouTube 上找到的正确解决方案对其进行了更新:YouTube

关于swift - 保存 Firebase 存储视频并使用 AVPlayerViewController 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38383359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com