如何从Firebase数据库而不是Swift中下载视频URLString [英] How to download Video URLString from Firebase Database not Storage in Swift

查看:46
本文介绍了如何从Firebase数据库而不是Swift中下载视频URLString的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在到处寻找如何从Firebase树结构中获取视频URLString,但是找不到任何地方.一切似乎都只显示了如何直接从Firebase Storage播放.我已经在Firebase数据库的树节点中创建了一个URLString,它指向存储中的视频.我正在尝试从该树中获取highlightVideourlString.

这是我要处理的代码:

 private func setupPlayerView() {

    FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).observeEventType(.ChildAdded, withBlock: { (snapshot) in
        guard let dictionary = snapshot.value as? [String: String] else { return}

        let urlString = dictionary["highlightVideo"]
    }, withCancelBlock: nil)

    if let url = NSURL(string: urlString) { ---code breaks on urlstring
        player = AVPlayer(URL: url)

        let playerLayer = AVPlayerLayer(player: player)
        videoView.layer.addSublayer(playerLayer)
        playerLayer.frame = CGRect(x: 0, y: 0, width: frame.width, height: frame.width * (9/16))

        player?.play()
}}

解决方案

您需要从StorageRef中获取视频URL. 否则,URL的格式可能不正确.在将URL设置为StorageRef时,将其保存在UserData中,而在下面的获取数据时,您将获得snapshot.value,您可以尝试如下操作:

要向videoUrl传递快照密钥,即dictonary ["highlightedVideo"]

    let storageRef = Storage.storage().reference(forURL: videoURL)
    storageRef.getData(maxSize: INT64_MAX) { (data, error) in
        if let error = error {
            print("Error downloading image data: \(error)")
            return
        }
        storageRef.getMetadata(completion: { (metadata, metadataErr) in

            if let error = metadataErr {
                print("Error downloading metadata: \(error)")
                return
            }
            if (metadata?.contentType == "image/gif") {
                print("It is Gif Image")
            } else {
                let downloadUrl = metadata?.downloadURL()
                if downloadUrl != nil{
     print(downloadUrl)
           //You will get your Video Url Here
        }

            }
        })
    }

I have been looking everywhere for how to get a videos URLString out of Firebase tree structure but can’t find it anywhere. Everything seems to be showing only how to play directly from Firebase Storage. I have already created a URLString in a tree node in Firebase Database which points to a video in Storage. I’m trying to get the urlString of highlightVideo from that tree.

Here’s where I’m up to with the code:

 private func setupPlayerView() {

    FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).observeEventType(.ChildAdded, withBlock: { (snapshot) in
        guard let dictionary = snapshot.value as? [String: String] else { return}

        let urlString = dictionary["highlightVideo"]
    }, withCancelBlock: nil)

    if let url = NSURL(string: urlString) { ---code breaks on urlstring
        player = AVPlayer(URL: url)

        let playerLayer = AVPlayerLayer(player: player)
        videoView.layer.addSublayer(playerLayer)
        playerLayer.frame = CGRect(x: 0, y: 0, width: frame.width, height: frame.width * (9/16))

        player?.play()
}}

解决方案

You need to fetch video url from StorageRef. Otherwise the url may not be in correct format.! While setting the url to StorageRef save it in your UserData and while Fetching Data below you get your snapshot.value you can try as:

To videoUrl pass you snapshot key ie dictonary["highlightedVideo"]

    let storageRef = Storage.storage().reference(forURL: videoURL)
    storageRef.getData(maxSize: INT64_MAX) { (data, error) in
        if let error = error {
            print("Error downloading image data: \(error)")
            return
        }
        storageRef.getMetadata(completion: { (metadata, metadataErr) in

            if let error = metadataErr {
                print("Error downloading metadata: \(error)")
                return
            }
            if (metadata?.contentType == "image/gif") {
                print("It is Gif Image")
            } else {
                let downloadUrl = metadata?.downloadURL()
                if downloadUrl != nil{
     print(downloadUrl)
           //You will get your Video Url Here
        }

            }
        })
    }

这篇关于如何从Firebase数据库而不是Swift中下载视频URLString的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆