Я пытаюсь воспроизвести локальное видео в приложении NativeScript на iOS, использую встроенные SDK AVFoundation для создания AVPlayer и т. Д. Я хочу, чтобы видео воспроизводилось с фильтром, чтобы сделать его черно-белым (настройка насыщенностидо 0). Я смог сделать это, используя AVVideoComposition
, используя этот метод:
https://developer.apple.com/documentation/avfoundation/avvideocomposition/1389556-videocompositionwithasset?language=objc
Однако, как только я применяю композицию видео с моим фильтром ("CIColorControls" CIFilter
), Я начинаю получать предупреждения памяти и иногда вылетает, даже для коротких видеороликов продолжительностью не более нескольких минут. Есть ли что-то в этой реализации, что может вызвать утечку памяти?
avPlayerItem.videoComposition = AVVideoComposition.videoCompositionWithAssetApplyingCIFiltersWithHandler(
avPlayerItem.asset,
(request) => {
let filter = CIFilter.filterWithName('CIColorControls');
filter.setValueForKey(request.sourceImage, kCIInputImageKey);
filter.setDefaults();
filter.setValueForKey(0.0, kCIInputSaturationKey);
let output = filter.valueForKey(kCIOutputImageKey);
if (!output) {
let err = NSError.alloc().initWithDomainCodeUserInfo('Could not filter frame', 0, null);
request.finishWithError(err);
} else {
request.finishWithImageContext(output, null);
}
}
);