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],

Другие вопросы по тегам