2016-06-18 13 views
3

私はFirebaseをはじめて使用しています。私は、あなたがStorageにビデオを保存し、そのユニークなURLをデータベースに保存する必要があることを読んでいます。どのように私はこのアプローチを取るだろうか?たとえば、ユーザーが再生する特定のビデオを要求した場合、データベースからURLを取得し、そのURLを使用してビデオをデータベースから取り出します。Firebase:ビデオをストレージに保存し、ビデオURLをデータベースに保存する方法は?

Firebaseで私の未経験者を助けてくれてありがとうございます。 Zero to App talk at Google I/Oから

+0

こんにちは、uがfirebaseストレージから動画を再生する任意の解決策を見つけますか?シェアしてください。 – abpatil

答えて

3

は、このコードを付属しています。

// pragma mark - UIImagePickerDelegate overrides 
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    // Get local file URLs 
    guard let image: UIImage = info[UIImagePickerControllerOriginalImage] as? UIImage else { return } 
    let imageData = UIImagePNGRepresentation(image)! 
    guard let imageURL: NSURL = info[UIImagePickerControllerReferenceURL] as? NSURL else { return } 

    // Get a reference to the location where we'll store our photos 
    let photosRef = storage.reference().child("chat_photos") 

    // Get a reference to store the file at chat_photos/<FILENAME> 
    let photoRef = photosRef.child("\(NSUUID().UUIDString).png") 

    // Upload file to Firebase Storage 
    let metadata = FIRStorageMetadata() 
    metadata.contentType = "image/png" 
    photoRef.putData(imageData, metadata: metadata).observeStatus(.Success) { (snapshot) in 
    // When the image has successfully uploaded, we get it's download URL 
    let text = snapshot.metadata?.downloadURL()?.absoluteString 
    // Set the download URL to the message box, so that the user can send it to the database 
    self.messageTextField.text = text 
    } 

    // Clean up picker 
    dismissViewControllerAnimated(true, completion: nil) 
} 

これは、イメージピッカーで選択された画像を撮影するFirebaseストレージにそれをアップロードし、テキストフィールドにその画像の結果のダウンロードURLを設定します。

// Send a chat message 
func sendMessage(sender: AnyObject) { 
    // Create chat message 
    let chatMessage = ChatMessage(name: self.username, message: messageTextField.text!, image: nil) 
    messageTextField.text = "" 

    // Create a reference to our chat message 
    let chatRef = database.reference().child("chat") 

    // Push the chat message to the database 
    chatRef.childByAutoId().setValue(["name": chatMessage.name, "message": chatMessage.message]) 
} 

sendMessageメソッドは、テキストボックスからテキストをデータベースに送信します。

最小限の例の完全なコードはthis gistです。

2

Firebase Storageにビデオを保存する私のソリューションです。スウィフト3.によって呼び出され

func uploadVideo(_ path: URL, _ userID: String, 
       metadataEsc: @escaping (URL, FIRStorageReference)->(), 
       progressEsc: @escaping (Progress)->(), 
       completionEsc: @escaping()->(), 
       errorEsc: @escaping (Error)->()) { 

    let localFile: URL = path 
    let videoName = getName() 
    let nameRef = StorageHandler.videosRef.child(userID).child(videoName) 
    let metadata = FIRStorageMetadata() 
    metadata.contentType = "video" 

    let uploadTask = nameRef.putFile(localFile, metadata: metadata) { metadata, error in 
     if error != nil { 
      errorEsc(error!) 
     } else { 
      if let meta = metadata { 
       if let url = meta.downloadURL() { 
        metadataEsc(url, nameRef) 
       } 
      } 
     } 
    } 

    _ = uploadTask.observe(.progress, handler: { snapshot in 
     if let progressSnap = snapshot.progress { 
      progressEsc(progressSnap) 
     } 
    }) 

    _ = uploadTask.observe(.success, handler: { snapshot in 
     if snapshot.status == .success { 
      uploadTask.removeAllObservers() 
      completionEsc() 
     } 
    }) 
} 

func getName() -> String { 
     let dateFormatter = DateFormatter() 
     let dateFormat = "yyyyMMddHHmmss" 
     dateFormatter.dateFormat = dateFormat 
     let date = dateFormatter.string(from: Date()) 
     let name = date.appending(".mp4") 
     return name 
    } 

について:

StorageHandler.shared.uploadVideo(myFileURL, myUserID, metadataEsc: { (url, ref) in 
    print("url = \(url)") // here is the URL you can then store into your Firebase tree 
    print("ref = \(ref)") 
}, progressEsc: { progress in 
    print("progress = \(progress)") 
}, completionEsc: { 
    print("done") 
}, errorEsc: { error in 
    print("*** Error during file upload: \(error.localizedDescription)") 
}) 
+0

ビデオの再生とダウンロードについて教えてください。事前にありがとう – JAck

+0

。あなたのニーズと現段階を説明するstackoverflowに関する新しい質問を開いてください。私はそれを調べてうれしいです –

関連する問題