2016-04-10 6 views
1

Так что я использую этот пользовательский класс для записи своего видео - https://github.com/piemonte/PBJVision. Я пытаюсь записать видео в приложении iOS, и, похоже, я не могу правильно загрузить код для загрузки файла на мой сервер синтаксического анализа. Несколько вещей:Сохранение видео в Parse & Playback

  • В классе PBJVision это позволяет использовать NSURL (fileWithPath: videoPath) для доступа к активу после того, как видео было записано.

  • Чтобы получить доступ к данным в активе и сохранить Разобрать, я использую следующую функцию:

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

    }

Я затем с помощью UITableView для отображения мои данные Parse , Вот как я возвращаю свой актив из Parse и в свой AVPlayer(): // Create Player for Reaction 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() 

скопировать значение, возвращается с urlFromParse, который (http://parlayapp.herokuapp.com/parse/files/smTrXDGZhlYQGh4BZcVvmZ2rYB9kA5EhPkGbj2R2/58c0648ae4ca9900f2d835feb77f165e_file.mp4) и вставляет его в мой браузер, и видео воспроизводится в браузере. Правильно ли я предполагаю, что файл сохранен правильно?

Когда я иду запускать свое приложение, видео не воспроизводится. Любое предложение о том, что я делаю неправильно?

+0

вы можете получить локальный файл для воспроизведения в своем приложении, чтобы убедиться, что часть вашего кода в порядке? – DogCoffee

+0

Я использовал ссылку для тестирования отображаемых носителей в таблице, и это сработало. Я использовал следующую ссылку: let videoUrl = NSURL (строка: "https://v.cdn.vine.co/r/videos/AA3C120C521177175800441692160_38f2cbd1ffb.1.5.13763579289575020226.mp4")! –

+0

Таким образом, фактическое воспроизведение видео в порядке (как показано в тесте), а ссылка, которую вы получаете из разбора, работает при вставке в браузер ... сложная. PS Вы разобрались в течение нескольких месяцев? – DogCoffee

ответ

0

Я обнаружил, что воспроизведение видео с помощью pfFile.url не работает. Вы должны написать NSData из PFFIle в локальный файл, используя правое расширение (mov), а затем воспроизвести видео, используя локальный файл в качестве источника.

+0

Это то, что я и сделал. –

Смежные вопросы