2016-04-10 19 views
1

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() 
          } 
         } 
        } 
    } 
    

    }

:

  • aşağıdaki işlevini kullanın varlık içinde veri erişim ve ayrıştırma için kaydetmek için . Varlığımı geri almak için Parse'den ve AVPlayer'ım(): // Create Player for Reaction player = Oyuncu() 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 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ı?

    +0

    Sadece kodunuzun bir kısmının iyi olduğundan emin olmak için uygulamanızda oynatılacak yerel bir dosya bulabilir misiniz? – DogCoffee

    +0

    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")! –

    +0

    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

    cevap

    0

    pfFile.url dosyasını kullanarak video oynatmanın işe yaramadığını buldum. NSData'yı PFFIle'dan doğru uzantıyı (mov) kullanarak yerel bir dosyaya yazmanız ve ardından videoyu yerel dosya olarak kaynak olarak oynatmanız gerekir.

    +0

    Ben de bu işi bitirdim. –

    İlgili konular