【问题标题】:Converting AVVideoComposition initializer to Nativescript将 AVVideoComposition 初始化程序转换为 Nativescript
【发布时间】:2019-09-24 14:39:27
【问题描述】:

在将此 Objective-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

【问题讨论】:

    标签: javascript objective-c nativescript


    【解决方案1】:

    使用 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);
    });
    

    注意:该代码未经测试,仅为给定本机代码的翻译。使用 tns-platform-declarations 获得 IntelliSense 支持。

    【讨论】:

    • 这看起来可行,谢谢!看来我犯的主要错误是在转换 API 时遵循苹果的 Swift 文档,而不是 nativescript 支持的 Objective-C 文档。
    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 2019-08-06
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2019-02-24
    相关资源
    最近更新 更多