2017-01-07 15 views
0

Я работаю над показом миниатюр видео. Вот мой код.Создание эскизов медленно в ios

override func viewDidLoad() { 
    super.viewDidLoad() 
for str in self.imgArray 
     { 
      let url = NSURL(string: str) 
      let movieAsset = AVURLAsset(URL: url!, options: nil) 
      let assetImageGemerator = AVAssetImageGenerator(asset: movieAsset) 
      assetImageGemerator.appliesPreferredTrackTransform = true 
      let frameRef = try! assetImageGemerator.copyCGImageAtTime(CMTimeMake(1, 2), actualTime: nil) 
      let image = UIImage(CGImage: frameRef) 
      self.imagesArray.append(image) 
     } 
} 

Используя это, я получаю эскизы правильно. Проблема в том, что при создании миниатюрного изображения происходит отсрочка около 5-10 секунд. В любом случае, я мог бы улучшить скорость этого кода и быстро создать миниатюру?

ответ

0

Я не думаю, что будет способ ускорить код - попробуйте с CMTimeMake(0, 10). Возможно, это ускорит код, так как некоторые видеофайлы требуют определенного времени на поиск.

Я думаю, вам нужно кэшировать полученные изображения из кода и в следующий раз обращаться к кешированным изображениям, чтобы он работал быстрее в целом. Существует много способов кэширования изображений - использование опции NSCache.

В качестве побочного примечания для получения миниатюр изображений не требуется 5-10 секунд. Обычно потребовалось менее одной секунды.