2016-07-07 16 views
0

В настоящее время я работаю над небольшим быстрым приложением, и я храню некоторые видеозаписи в папке документов приложения. Я хотел бы получить их позже. Я уже получил множество расположений файлов, как это:Путь к файлу документа недоступен в swift

file:///private/var/mobile/Containers/Data/Application/6C462C4E-05E2-436F-B2E6-F6D9AAAC9361/Documents/videorecords/196F9A75-28C4-4B65-A06B-6111AEF85F01.mov 

Теперь я хочу использовать такое расположение файла, чтобы создать миниатюру с первым кадром и подключение, что к моему ImageView со следующим фрагментом кода:

func createVideoStills() { 
    for video in directoryContents { 
     print("\(video)") 
     do { 
      let asset = AVURLAsset(URL: NSURL(fileURLWithPath: "\(video)"), options: nil) 
      let imgGenerator = AVAssetImageGenerator(asset: asset) 
      imgGenerator.appliesPreferredTrackTransform = true 
      let cgImage = try imgGenerator.copyCGImageAtTime(CMTimeMake(0, 1), actualTime: nil) 
      let uiImage = UIImage(CGImage: cgImage) 
      videoCell.imageView = UIImageView(image: uiImage) 
      //let imageView = UIImageView(image: uiImage) 
     } catch let error as NSError { 
      print("Error generating thumbnail: \(error)") 
     } 
    } 
} 

Первый отпечаток дает мне путь, как описано выше. Но AVURLAsset не нравится этот путь, потому что он выкладывает следующую ошибку:

Error generating thumbnail: Error Domain=NSURLErrorDomain Code=-1100 "The requested URL was not found on this server." UserInfo={NSLocalizedDescription=The requested URL was not found on this server., NSUnderlyingError=0x14ee29170 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

Что странно потому что прямо там. Любые решения о том, как исправить/решить эту проблему?

С наилучшими пожеланиями,

Wouter

ответ

1

Выход вашего print("\(video)") не файл путь но строковое представление файла URL. Вы должны использовать init(string:), чем init(fileURLWithPath:) от NSURL.

Посмотрите, что вы получаете с:

  let asset = AVURLAsset(URL: NSURL(string: video), options: nil) 

(Ненужные строки интерполяции будет генерировать некоторый неожиданный результат без ошибок - как получить "Дополнительно (...)", поэтому следует избегать.)

+0

Теперь для меня смысл. Я был без необходимости преобразовывать его. У меня уже был массив с NSURL. Так что не нужно было его бросать. Так глупо от меня. Я знаю, что я делаю строковое представление из URL. Все, что мне нужно было сделать, это следующее: 'let asset = AVURLAsset (URL: video, options: nil)' Спасибо, что указал мне в правильном направлении! – Wouter125