iOS Swift - невозможно использовать видео из библиотеки
Я пытаюсь получить видео из библиотеки в моем быстром приложении. Я использую следующий фрагмент кода:
print("ChatDetailsController - imgaction - Vid from Lib pressed")
self.selection = "videoLib";
self.imgSelection = "vidFromLib"
self.imagePicker.sourceType = .PhotoLibrary
self.imagePicker.delegate = self
self.imagePicker.mediaTypes = ["public.movie"]
self.presentViewController(self.imagePicker!, animated: true, completion: nil)
Тогда в методе делегата:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
if(selection == "videoLib")
{
if let videoURL = info[UIImagePickerControllerReferenceURL] as? NSURL
{
print("imagePickerController - reached for video - from Lib - \(videoURL)")
let videoData = NSData(contentsOfURL: videoURL)
}
}
}
При запуске приложения оно показывает библиотеку, и я могу выбрать видео, затем оно говорит о сжатии видео... но затем приложение вылетает.
Сбой происходит, когда я пытаюсь получить доступ к videoData
Переменная, потому что она не смогла получить фактические данные, так как путь - это путь ресурса, а не путь видео.
Журнал показывает что-то похожее на это:
fatal error: unexpectedly found nil while unwrapping an Optional value
Функция печати показывает:
imagePickerController - reached for video - from Lib - assets-library://asset/asset.MOV?id=7D3BFA00-A7CB-470C-8899-F82FCC2CBC54&ext=MOV
Также сразу после выбора / выбора видео в консоли / журнале отображается сообщение, подобное этому:
[Generic] video path /var/mobile/Media/PhotoData/CPLAssets/group419/A2901DD1-FDEF-423B-B4A3-E808B9AC45E1.MOV for PLPreviewImageAndDurationForVideoAtPath does not exist
Конечно, имя файла меняется при каждом запуске.
Я могу получить видео и изображения с камеры, а также получить изображения из библиотеки, у меня только проблемы с использованием видео из библиотеки. Я ожидаю увидеть URL видео, похожий на:
/var/mobile/Containers/Data/Application/BEDDC883-B20E-496D-8C9A-A40EC0A29214/Documents/63ea24932c101b76c72fcbae3993fc9b.mov
например; где видеофайл находится в приложении и не отображается в качестве непригодного для использования ресурса. Любая помощь будет оценена.
1 ответ
Проблема в том, что вы пытаетесь получить не то видео. Вы пытаетесь использовать info[UIImagePickerControllerReferenceURL]
, Что вы хотите info[UIImagePickerControllerMediaURL]
,