首页 > 解决方案 > 将 DeepAR mask 应用到 Agora 视频通话 iOS

问题描述

我在尝试让 DeepAR 的面具出现在我的 Agora 视频通话中时遇到了问题。我关注了这个Github repo,但是当我按照他们对 videoEncoderCONfiguration 和 startFrameOutput 的方式进行设置时,它对我来说崩溃了,如下所示:

 func setupVideo() {

    agoraKit.setExternalVideoSource(true, useTexture: true, pushMode: true)
    agoraKit.enableVideo()
    agoraKit.disableAudio()

    agoraKit.setVideoEncoderConfiguration(AgoraVideoEncoderConfiguration(size: AgoraVideoDimension640x360,
                                                                         frameRate: .fps15,
                                                                         bitrate: AgoraVideoBitrateStandard,
                                                                         orientationMode: .adaptative))
}
func joinChannel() {

    agoraKit.joinChannel(byToken: nil, channelId: "demoChannel1", info: nil, uid: 0) { [unowned self] (channel, uid, elapsed) -> Void in
        // Did join channel "demoChannel1"
        UIApplication.shared.isIdleTimerDisabled = true
        self.localVideoView.startFrameOutput(withXmin: 0, xmax: 1, ymin: 0, ymax: 1, scale: 1)
        self.localVideoView.isHidden = false
    }
}

应用程序在行后崩溃并显示此消息self.arView.startFrameOutput(withXmin: 0, xmax: 1, ymin: 0, ymax: 1, scale: 1)

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSArrayM insertObject:atIndex:]: object cannot be nil”

当我像下面这样基于正常的 Agora 调用 repo 设置调用时,应用程序本身运行良好,但我看不到视频上的掩码,即使我在控制台中打印掩码。

func setupVideo() {

    rtcEngine.enableVideo()

    let canvas = AgoraRtcVideoCanvas()
    canvas.uid = 0
    canvas.view = localVideoView
    canvas.renderMode = .hidden
    rtcEngine.setupLocalVideo(canvas)

}

func joinChannel(channelId: String, token: String, uid: UInt) {
    rtcEngine.joinChannel(byToken: token, channelId: channelId, info: nil, uid: uid) { (sid, uid, elapsed) in
        self.callAnswered = true
        self.showButtonsIfCallIsAnswered()
        self.localVideoView.isHidden = false

    }
    UIApplication.shared.isIdleTimerDisabled = true
}

问题是我看不到掩码,即使控制台正在打印值。当我在 DeepAR 和 Agora 的仓库中设置外部视频源时,应用程序在加入后立即崩溃。

我真的很感谢有人帮我调试这个,这样一切都可以顺利运行:)

标签: iosswiftagora.io

解决方案


推荐阅读