关于ios:录制视频并上传到Firebase | 珊瑚贝

Record Video and upload to Firebase


有人知道如何将视频上传到 Firebase 吗?
我使用了这个链接:在 swift

中录制视频

我设法在 giphy 上录制并在同一视图 Gif 中播放我的视频

播放我刚刚录制的视频的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    @IBAction func playVideo(sender: AnyObject) {
    print(“Play a video”)

    // Find the video in the app’s document directory
    let paths = NSSearchPathForDirectoriesInDomains(
        NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
    let documentsDirectory: AnyObject = paths[0]
    let dataPath = documentsDirectory.stringByAppendingPathComponent(saveFileName)

    let videoAsset = (AVAsset(URL: NSURL(fileURLWithPath: dataPath)))
    let playerItem = AVPlayerItem(asset: videoAsset)

    print(playerItem)

    let videoView = UIView(frame: CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.width, self.view.bounds.height))

    let pathURL = NSURL.fileURLWithPath(dataPath)
    moviePlayer = MPMoviePlayerController(contentURL: pathURL)
    if let player = moviePlayer {
        player.view.frame = videoView.bounds
        player.prepareToPlay()
        player.scalingMode = .AspectFill
        videoView.addSubview(player.view)

    }

    moviePlayer!.view.frame = videoPreview.bounds
    moviePlayer!.view.center = CGPointMake(CGRectGetMidX(videoPreview.bounds), CGRectGetMidY(videoPreview.bounds))
    videoPreview.addSubview((moviePlayer?.view)!)
}

而且我知道如何将图片上传到 Firebase 我需要像这样使用 NSString:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var base64String : NSString!

        //let pic = UIImagePNGRepresentation(UIImage(named:”3″)!)
    let picture = UIImageJPEGRepresentation(self.profilePictureImageView.image!, 0.1)!

    self.base64String = picture.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)

    let updatedProfileInfo = [
       “provider”: USER_REF.authData.provider,
       “email”: self.emailTextfield.text!,
       “Username”: self.usernameTextfield.text!,
       “ProfilePicture” :  self.base64String,
       “ProfileDescription” : self.bioDescriptionTextfield.text
    ]
    USER_REF.updateChildValues(updatedProfileInfo)

但是你如何处理视频呢?

谢谢

  • 尝试将视频存储在 Firebase 数据库中是个坏主意。在这里查看我半小时前的回答:stackoverflow.com/questions/36718006/…
  • 好的谢谢。但为什么这是个坏主意?如果我在哪里可以找到视频存储服务?你的意思是精简版 youtube 吗?
  • Firebase 是一个 JSON 数据库。视频(如图像)本质上不是 JSON 数据。关于使用什么视频存储服务的建议在 Stack Overflow 上是题外话,但一些谷歌搜索应该会让你得到一个可以持续一生的列表。
  • 我在这方面与@FrankvanPuffelen 合作 – 应避免在 Firebase 中存储视频。但是,如果它是一个非常短的视频,比如 10 秒 @ 10 帧/秒,则可以选择; Quicktime 支持 Base64 编码。此外,视频只是连续观看的一组单独的图像。因此,您可以拍摄视频,将其拼接成帧,然后存储每一帧(移动播放头、复制图像、编码并写入 firebase、冲洗、重复)。请记住,虽然每个节点的大小限制为 10MB,但您将通过视频快速超越这一点。另一种存储解决方案是一个更好的主意。


这是我使用 UIImagePicker 对象类在我的设备中选择视频或图像并将其上传到 Fireabase 的解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@IBAction func uploadButton(_ sender: Any) {
    // Configuration
    let picker = UIImagePickerController()
    picker.allowsEditing = true
    picker.delegate = self
    picker.mediaTypes = [kUTTypeImage as String, kUTTypeMovie as String]

    // Present the UIImagePicker Controller
    present(picker, animated: true, completion: nil)
}

// The didFinishPickingMediaWithInfo let’s you select an image/video and let’s you decide what to do with it. In my example, I decided to convert the selected data into video and upload it to Firebase Storage
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if let videoURL = info[UIImagePickerControllerMediaURL] as? NSURL {
        // we selected a video
        print(“Here’s the file URL:”, videoURL)

        // Where we’ll store the video:
        let storageReference = FIRStorage.storage().reference().child(“video.mov”)

        // Start the video storage process
        storageReference.putFile(videoURL as URL, metadata: nil, completion: { (metadata, error) in
            if error == nil {
                print(“Successful video upload”)
            } else {
                print(error?.localizedDescription)
            }
        })

      }
            //Dismiss the controller after picking some media
            dismiss(animated: true, completion: nil)
    }

  • 这是否适用于文档目录 URL 而不是照片库?前任。 file:///var/mobile/Containers/Data/Application/E9319B41-05BF??-4F5C-8D58-999CE0087??D8F/Documents/tempor??ary_video.mp4
  • 当然!只要您可以通过 URL 指向媒体所在的位置,您就可以将其上传到服务器。试一试,让我知道进展如何:)


来源:https://www.codenong.com/36722251/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9404.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?