So verwende ich diese benutzerdefinierte Klasse, um mein Video aufzunehmen - https://github.com/piemonte/PBJVision. Ich versuche, Videos in meiner iOS-App aufzuzeichnen, und ich kann nicht den richtigen Code zum Hochladen der Datei auf meinen Parse-Server erhalten. Ein paar Dinge:Speichern von Video zu analysieren und Wiedergabe
In der PBJVision Klasse ermöglicht es Ihnen, NSURL zu verwenden (fileWithPath: videoPath) für den Zugriff auf den Vermögenswert, nachdem das Video aufgezeichnet wurde.
Um die Daten in der Asset-Zugriff und Parse speichern zu, verwende ich die folgende Funktion:
func vision(vision: PBJVision, capturedVideo videoDict: [NSObject : AnyObject]?, error: NSError?) { if error != nil { print("Encountered error with video") isVideo = false } else { let currentVideo = videoDict let videoPath = currentVideo![PBJVisionVideoPathKey] as! String print("The video path is: \(videoPath)") self.player = Player() self.player.delegate = self self.player.view.frame = CGRect(x: cameraView.frame.origin.x, y: cameraView.frame.origin.y, width: cameraView.frame.width, height: cameraView.frame.height) self.player.playbackLoops = true videoUrl = NSURL(fileURLWithPath: videoPath) self.player.setUrl(videoUrl) self.cameraView.addSubview(self.player.view) self.player.playFromBeginning() nextButton.hidden = false isVideo = true let contents: NSData? do { contents = try NSData(contentsOfFile: videoPath, options: NSDataReadingOptions.DataReadingMappedAlways) } catch _ { contents = nil } print(contents) let videoObject = PFObject(className: "EventChatroomMessages") videoObject.setValue(user, forKey: "user") videoObject.setValue("uG7v2KWBQm", forKey: "eventId") videoObject.setValue(NSDate(), forKey: "timestamp") let videoFile: PFFile? do { videoFile = try PFFile(name: randomAlphaNumericString(26) + ".mp4", data: contents!, contentType: "video/mp4") print("VideoFile: \(videoFile)") } catch _ { print("error") } print(videoFile) videoObject.setValue(videoFile, forKey: "image") videoObject.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in if success == true { ProgressHUD.showSuccess("Video Saved.", interaction: false) dispatch_async(dispatch_get_main_queue()) { ProgressHUD.dismiss() } } else { ProgressHUD.showError("Error Saving Video.", interaction: false) dispatch_async(dispatch_get_main_queue()) { ProgressHUD.dismiss() } } } }
}
mich dann einen UITableView mit meinen Daten von Parse anzuzeigen . Hier ist, wie ich mein Asset zurück von Parse und in meinem AVPlayer(): // Create Player für Reaktion let player = Player() player.delegate = self player.view.frame = CGRectMake (0.0, nameLabel. frame.origin.y nameLabel.frame.size.height + + 0,0, self.view.frame.width, 150) player.view.backgroundColor = UIColor.whiteColor()
let video = message.objectForKey("image") as! PFFile
let urlFromParse = video.url!
print(urlFromParse)
let url = NSURL(fileURLWithPath: video.url!)
print(url)
let playerNew = AVPlayer(URL: url!)
let playerLayer = AVPlayerLayer(player: playerNew)
playerLayer.frame = CGRectMake(0.0, nameLabel.frame.origin.y + nameLabel.frame.size.height + 0.0, self.view.frame.width, 150)
cell.layer.addSublayer(playerLayer)
playerLayer.backgroundColor = UIColor.whiteColor().CGColor
playerNew.play()
I kopiert den Wert, der wird von urlFromParse zurückgegeben, das ist (http://parlayapp.herokuapp.com/parse/files/smTrXDGZhlYQGh4BZcVvmZ2rYB9kA5EhPkGbj2R2/58c0648ae4ca9900f2d835feb77f165e_file.mp4) und fügen Sie es in meinen Browser ein und das Video wird im Browser abgespielt. Darf ich annehmen, dass die Datei korrekt gespeichert wurde?
Wenn ich meine App laufen lasse, wird das Video nicht abgespielt.Ein Vorschlag, was ich falsch mache?
Können Sie eine lokale Datei in Ihrer App abspielen, um sicherzustellen, dass ein Teil Ihres Codes in Ordnung ist? – DogCoffee
Ich habe einen Link verwendet, um das Anzeigemedium in der Tabelle zu testen, und es hat funktioniert. Ich benutzte den folgenden Link: lassen Sie VideoUrl = NSURL (String: "https://v.cdn.vine.co/r/videos/AA3C120C521177175800441692160_38f2cbd1ffb.1.5.13763579289575020226.mp4")! –
So ist die tatsächliche Wiedergabe eines Videos in Ordnung (wie im Test zu sehen), und der Link, den Sie von Parse erhalten, funktioniert, wenn Sie in einen Browser einfügen ... knifflig. PS du parsest in ein paar Monaten weg? – DogCoffee