ios - 将 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 的仓库中设置外部视频源时,应用程序在加入后立即崩溃。
我真的很感谢有人帮我调试这个,这样一切都可以顺利运行:)
解决方案
推荐阅读
- laravel - 如何在程序中使用 Laravel 7 中的错误?
- javascript - 如何在 node.js 中为位置输入输入单个反斜杠而不是双反斜杠?
- c# - 传递给 ViewDataDictionary 的模型项是类型
- laravel - 在laravel中没有IV的openssl加密
- .net-core - C# .Net Core 中的 MarshalAs SAFEARRAY
- javascript - 为使用 useCallback 包装的函数启用 noImplicitAny?
- python - 在ansible中使用查找时出现模板错误
- javascript - 如何在 jQuery 中获取所选元素的 x,y 位置?
- sql - 从 oracle 表中删除特定行
- c++ - 对元素执行计算,并检索向量中元素的索引