Преобразование инициализатора AVVideoComposition в Nativescript - PullRequest
0 голосов
/ 24 сентября 2019

Требуется некоторая помощь при переносе этого метода классаjective-c на JS / nativescript. Каждый вариант, который я пробовал, приводил к TypeError: undefined is not a function...

https://developer.apple.com/documentation/avfoundation/avvideocomposition/1389556-init

, которыйЯ пытался написать в JS как:

const videoComp = AVVideoComposition.alloc().initWithAssetApplyingCIFiltersWithHandler(asset, (request) => { ... });

//OR
const videoComp = AVVideoComposition.alloc().initAssetApplyingCIFiltersWithHandler(asset, (request) => { ... });

//OR
const videoComp = AVVideoComposition.alloc().initAssetApplyingCIFiltersWithHandlerApplier(asset, (request) => { ... });

//OR
const videoComp = new AVVideoComposition(asset, (request) => { ... });

, чтобы назвать несколько.по сути, я пытаюсь перенести этот код на nativescript / JS:

let blurRadius = 6.0
let asset = AVAsset(url: streamURL)
let item = AVPlayerItem(asset: asset)
item.videoComposition= AVVideoComposition(asset: asset) { request in
    let blurred = request.sourceImage.clampedToExtent().applyingGaussianBlur(sigma: blurRadius)
    let output = blurred.clampedToRect(request.sourceImage.extent)
    request.finish(with: output, context: nil)
}

, найденный в этом сообщении в блоге: https://willowtreeapps.com/ideas/how-to-apply-a-filter-to-a-video-stream-in-ios

1 Ответ

1 голос
/ 24 сентября 2019

Это должно выглядеть примерно так с JavaScript / Typescript,

let blurRadius = 6.0;
let asset = AVAsset.assetWithURL(streamURL);
let item = AVPlayerItem.alloc().initWithAsset(asset);
item.videoComposition = AVVideoComposition.videoCompositionWithAssetApplyingCIFiltersWithHandler(asset, request => {
    let blurred = request.sourceImage.imageByClampingToExtent().imageByApplyingGaussianBlurWithSigma(blurRadius);
    let output = blurred.imageByClampingToRect(request.sourceImage.extent);
    request.finishWithImageContext(output, null);
});

Примечание: Код не проверен и является просто переводом данного нативного кода.Для поддержки IntelliSense используйте декларации платформы tns .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...