Генерация миниатюр видео замедляет просмотр таблицы

Я создаю миниатюры для видео, хранящихся в моем каталоге документов, и отображаю их в UITableview. Это работает, но делает просмотр таблицы медленным и дерганым при прокрутке. Я тоже использовал GCD (dispatch_async), но результат тот же. Может кто-нибудь сказать мне, как это может быть правильно реализовано? Как я могу добиться этого, не имея медленного, отрывистого представления таблицы?

ПРИМЕЧАНИЕ. Я предпочитаю создавать миниатюры по мере необходимости, а не создавать и сохранять несколько миниатюр при первом создании видео.

Вот мой код, который генерирует миниатюры с помощью контроллера MPMoviePlayer:

movie= [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:Path]];
thumbnail = [movie thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];[player stop];
[player stop];        
player = nil;

person Paul A.    schedule 22.02.2013    source источник
comment
Используйте SDWebImage. это дает очень плавную загрузку изображений. github.com/rs/SDWebImage   -  person Suresh    schedule 22.02.2013
comment
SDWebImage вообще НЕ отвечает моим требованиям. Опять же, видео, для которых я создаю эскизы, являются локальными, в каталоге документов, а не на удаленном сервере. Кроме того, я уже могу создавать миниатюры для фотографий без каких-либо проблем, так что это просто видео в каталоге документов.   -  person Paul A.    schedule 22.02.2013
comment
вы показываете изображения или видео в виде таблицы. четко сформулировать проблему.   -  person Suresh    schedule 22.02.2013
comment
Мой вопрос конкретно касался проблемы: генерировать и отображать миниатюры видео в табличном представлении без замедления просмотра таблицы. Пожалуйста, прочитайте это снова   -  person Paul A.    schedule 22.02.2013
comment
Вы выделяете новый MPMoviePlayerController каждый раз, когда делаете миниатюру для каждой ячейки представления таблицы? Используете ли вы dequeuereusablecellwithidentifier правильно (или вообще)?   -  person Monte Hurd    schedule 22.02.2013
comment
Я выделяю каждый раз, когда мне нужно создать миниатюру. Однако, когда создается ячейка таблицы, я dequeueReusableCellWithIdentifier:. Я могу создавать миниатюры для нескольких сотен изображений без замедления в одном и том же табличном представлении, но именно видео вызывают замедление.   -  person Paul A.    schedule 22.02.2013
comment
Верно, но запуск MPMoviePlayerController с видео связан с большими накладными расходами. Если вы просто получаете миниатюры из одного видео за раз, вытащите эту строку, чтобы видео не загружалось повторно в память. (В качестве теста вытащите его из фрагмента кода, который вы цитировали выше, и поместите его в метод, который происходит только один раз, прежде чем ячейки таблицы начнут заполняться - возможно, метод viewWillAppear)   -  person Monte Hurd    schedule 22.02.2013
comment
Я ценю ваше предложение, но обратите внимание, что это обязательно должно быть внутри tableView: cellForRowAtIndexPath:. Невозможно добавить инструкцию вне этого метода. DequeueReusableCellWithIdentifier: гарантирует, что я повторно использую существующие ячейки, и если они уже существуют на экране, они не выделяются повторно. Я думаю, что ответ лежит вокруг блоков (GCD), но моя реализация блоков все еще медленная, в то время как для изображений она быстрая (несколько сотен МБ).   -  person Paul A.    schedule 22.02.2013


Ответы (1)


Я нашел решение в миниатюре UIImagePickerController видео, которое выбрано из библиотеки решает мою проблему. Чтобы получить очень быстрый ответ, реализуйте код, используя GCD (блоки)

person Paul A.    schedule 22.02.2013