Как вызвать перерисовку фильтра в применении CIFiltersWithHandler AVVideoComposition?IOS

Программируем под IOS
Ответить
Anonymous
 Как вызвать перерисовку фильтра в применении CIFiltersWithHandler AVVideoComposition?

Сообщение Anonymous »

Я использую Swift для отображения контента из AVPlayer в AVPlayerLayer представления. Связанный с ним AVPlayerItem имеет videoComposition, и слегка упрощенная версия кода для его создания (без проверки ошибок и т. д.) выглядит так:

Код: Выделить всё

playerItem.videoComposition = AVVideoComposition(asset: someAsset, applyingCIFiltersWithHandler: {
[unowned self] (request: AVAsynchronousCIImageFilteringRequest) in

let paramDict = >

// filter the image
let filter = self.ciFilterWithParamDict(paramDict) {
filter.setValue(request.sourceImage, forKey: kCIInputImageKey)
if let filteredImage = filter.outputImage {
request.finishWithImage(filteredImage, context: nil)
}
})
Все это работает, как и ожидалось, когда AVPlayer воспроизводит или ищет. И если новая видеокомпозиция создана и загружена, AVPlayerLayer отображается правильно.

Однако я не нашел способа «запустить» AVPlayer/ AVPlayerItem/ AVVideoComposition для повторного рендеринга, когда я изменил некоторые значения, которые я использую для расчета параметров фильтра. Если я меняю значения, а затем играю или ищу, это отображается правильно, но только если я играю или ищу. Нет ли способа запустить рендеринг «на месте»?

Подробнее здесь: https://stackoverflow.com/questions/352 ... erswithhan
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»