Bu özel sınıfa videomu kaydetmek için kullanıyorum - https://github.com/piemonte/PBJVision. IOS uygulamasında video kaydetmeye çalışıyorum ve dosyayı ayrıştırıcı sunucuma yüklemek için doğru kodu almıyorum. Birkaç nokta: Video kaydedildikten sonra öerişim: (videoPath fileWithPath) Eğer NSURL kullanmanızı sağlar PBJVision sınıftaVideoyu Ayrıştırma ve Oynatma için Kaydetme
. Sonra Parse benim verileri görüntülemek için bir UITableView kullanıyorum
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() } } } }
}
:
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 değerini kopyalamanizi (http://parlayapp.herokuapp.com/parse/files/smTrXDGZhlYQGh4BZcVvmZ2rYB9kA5EhPkGbj2R2/58c0648ae4ca9900f2d835feb77f165e_file.mp4) olan urlFromParse'den döndürülür ve tarayıcımın içine yapıştırılır ve video tarayıcıda oynatılır. Dosyanın doğru şekilde kaydedildiğini farz etmem gerekiyor mu?
Uygulamamı çalıştırmaya gittiğimde, video oynatmıyor. Yanlış yaptığım şey hakkında bir öneriniz var mı?
Sadece kodunuzun bir kısmının iyi olduğundan emin olmak için uygulamanızda oynatılacak yerel bir dosya bulabilir misiniz? – DogCoffee
Tablodaki medyayı test etmek için bir bağlantı kullandım ve işe yaradı. Aşağıdaki bağlantıyı kullandım: let videoUrl = NSURL (string: "https://v.cdn.vine.co/r/videos/AA3C120C521177175800441692160_38f2cbd1ffb.1.5.13763579289575020226.mp4")! –
Yani bir video gerçek oyun (test olarak görüldüğü gibi), ve bir tarayıcıya yapıştırdığınızda parse çalışmalarından elde ettiğiniz bağlantı ... zor bir. Ayrıldığın PS birkaç ay içinde mi gidiyor? – DogCoffee