Недавно я создал свой собственный сервер синтаксического анализа, размещенный на heroku, используя mongoLab для хранения моих данных.iOS - Не удается передать видео из Parse Backend
Моя проблема заключается в том, что я сохраняю видео в виде разбора PFFile
, однако я не могу его воспроизвести после сохранения.
Вот мои точные шаги.
Во-первых, я сохранить видео возвращенное UIImagePicker
//Get the video URL
let videoURL = info[UIImagePickerControllerMediaURL] as? NSURL
//Create PFFile with NSData from URL
let data = NSData(contentsOfURL: videoURL!)
videoFile = PFFile(data: data!, contentType: "video/mp4")
//Save PFFile first, then save the PFUser
PFUser.currentUser()?.setObject(videoFile!, forKey: "profileVideo")
videoFile?.saveInBackgroundWithBlock({ (succeeded, error) -> Void in
print("saved video")
PFUser.currentUser()?.saveInBackgroundWithBlock({ (succeeded, error) -> Void in
if succeeded && error == nil {
print("user saved")
//Hide progress bar
UIView.animateWithDuration(0.5, animations: {() -> Void in
self.progressBar.alpha = 0
}, completion: { (bool) -> Void in
self.progressBar.removeFromSuperview()
})
}else{
//Show error if the save failed
let message = error!.localizedDescription
let alert = UIAlertController(title: "Uploading profile picture error!", message: message, preferredStyle: UIAlertControllerStyle.Alert)
let dismiss = UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil)
alert.addAction(dismiss)
self.presentViewController(alert, animated: true, completion: nil)
}
})
}, progressBlock: { (progress) -> Void in
self.progressBar.setProgress(Float(progress)/100, animated: true)
})
Это все работает хорошо. Проблема заключается в том, что я извлекаю PFFile
и пытаюсь передать видео. Вот мой код, который:
//Get URL from my current user
self.videoFile = PFUser.currentUser()?.objectForKey("profileVideo") as? PFFile
self.profileVideoURL = NSURL(string: (self.videoFile?.url)!)
//Create AVPlayerController
let playerController = AVPlayerViewController()
//Set AVPlayer URL to where the file is stored on the sever
let avPlayer = AVPlayer(URL: self.profileVideoURL)
playerController.player = avPlayer
//Present the playerController
self.presentViewController(playerController, animated: true, completion: {() -> Void in
playerController.player?.play()
})
Что в конечном итоге происходит, когда я представляю playerController
это:
Почему это происходит, когда я пытаюсь поток видео?
Любая помощь с благодарностью!
UPDATE
Недавно я пытался играть видео сохраненную из другой базы данных, используя следующую строку кода: let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
Это подтверждает, что это формат Я спасаю мой PFFile
в том, что вызывает Ошибка.
Она должна быть эта строка вызывает ошибку в "video/mp4"
, вероятно, не правильный формат: videoFile = PFFile(data: data!, contentType: "video/mp4")
UPDATE 2
Я взял прямую ссылку на свой файл, расположенный на .mp4 mongoLab и нашел Я могу воспроизвести его в Google Chrome, но не на сафари или моем iPhone.
UPDATE 3
Я обнаружил, что это была проблема с самого разбора апи, и не имеет ничего общего с кодом, как мой код работает отлично при использовании оригинального синтаксического анализа бэкенд (тот, который закрытие) вместо моего настраиваемого сервера синтаксического анализа. В настоящее время у меня нет решения, но со временем оно должно быть исправлено.
У меня проблема с аналогичной (такой же?). Можете ли вы пролить свет на свое третье обновление? Сообщалось об этом сотрудникам GH? – sbauch
@Josh Это было сообщено много раз в GH, но напрасно. Они просто закрыли бы его как проблему с сервером. Некоторые люди сообщили об успехе, переключившись с mLab на S3, но есть и другие, которые сообщили о той же проблеме с S3. На данный момент синтаксический анализатор -heroku- mLab не передает потоковое аудио, видео-файлы - это то, что мы можем сделать. Если кто-то может это решить, мы должны помочь себе, разместив здесь решение. Я не думаю, что это будет решено персоналом Парса. – Tobio