主页 > tokenpocket钱包 > [小狐狸下载]声网龚宇华:详解如何在实时视频通话中实现AR功能

[小狐狸下载]声网龚宇华:详解如何在实时视频通话中实现AR功能

admin tokenpocket钱包 2022年05月07日
摘要:2018年4月20日-22日,由 infoQ 主办的 Qcon 2018全球软件开发大会在北京如期举行。声网首席 iOS 研发工程师,iOS 端移动应


  9agoraKit.joinChannel(byToken: nil,

  14    func shouldDispose() { }

  目前,苹果和 Google 分别推出了 ARKit 和 ARCore,为我们在移动端实现 AR 场景降低了门槛。实现AR的原理是怎样的呢?我们以 ARKit为例,来看下它是如何工作的。如刚刚所说,AR 就是在实际环境中植入虚拟元素,那么首先要识别出周围环境,也就是通过 iPhone 的摄像头来实现。在手机加速计、陀螺仪的帮助下,ARKit 可以识别3D 的环境并判断手机在环境中的姿态。

  7                       rotation: AgoraVideoRotation) {

  8// 加入会议

  5agoraKit.setChannelProfile(.liveBroadcasting)

  3                                              delegate: self)

  2agoraKit.setVideoSource(videoSource)

缺少纹理:如果摄像头指向一面白墙,那也没法获得特征,ARKit 也去无法找到并追踪用户。尝试避免看向纯色、反光表面等地方。

override func viewDidAppear(_ animated: Bool) {

  2let agoraKit = AgoraRtcEngineKit.sharedEngine(withAppId: myAppId,

  13                     joinSuccess: nil)

  1func session(_ session: ARSession, didUpdate frame: ARFrame) {

sceneView.session.run(configuration)

@IBOutlet weak var sceneView: ARSCNView!

  3    func bufferType() -> AgoraVideoBufferType { return .rawData }

  1// 初始化引擎

  12                     uid: 0,

  11                     info: nil,

  在完成环境识别之后,还需要渲染,通常我们会想到使用 OpenGL 或 Metal 渲染,但是它们的开发成本比较高,所以苹果想了一办法,就是通过 SceneKit 进行渲染。

  6                       size: CGSize,

}

  8        let rgbTexture = createTexture(widthYUV: rawData, size: size, rotation: rotation)

全球化部署:支持全球200多个国家与地区。

[小狐狸下载]声网龚宇华:详解如何在实时视频通话中实现AR功能

  2018年4月20日-22日,由 infoQ 主办的 Qcon 2018全球软件开发大会在北京如期举行。声网首席 iOS 研发工程师,iOS 端移动应用产品设计和技术架构负责人龚宇华,受邀分享了《基于 ARkit 和 ARcore,在实时视频通话中实现 AR 功能》,在演讲中剖析了 AR 与 VR 差异,ARKit 的工作原理,以及逐步讲解如何基于 ARKit 与声网Agora SDK 创建 AR 视频会议场景。

[小狐狸下载]声网龚宇华:详解如何在实时视频通话中实现AR功能

  1agoraKit.enableExternalAudioSource(withSampleRate: 44100, channelsPerFrame: 1)

低延时:声网SDK 实时通讯网络,可实现全球百毫秒级音视频通话;

快速集成:开发者最快可在30分钟内完成集成;

  13    func shouldStop() { }

  ARKit 如何实现 AR 场景?

  3}

  10    }

光线差:没有足够的光或光线过强的镜面反光。尝试避免这些光线差的环境。

[小狐狸下载]声网龚宇华:详解如何在实时视频通话中实现AR功能

  1let videoSource = ARVideoSource()

guard ARWorldTrackingConfiguration.isSupported else {

  “就像我们说把大象放进冰箱里三步骤,我们要打开冰箱,把大象放进去,关上冰箱。那我们实现 AR 的虚拟会议室也是分三步骤,就是实现 AR、实现视频会议,然后把它两个结合起来。”龚宇华表示。

  4// 设置为发送端

  5    func renderRawData(_ rawData: UnsafeMutableRawPointer,

  10                     channelId: “QCon2018”,

super.viewDidAppear(animated)

  最后,当我们通过SDK获得了其它用户发来的音视频数据后,我们还需要将其渲染到AR环境中,实现方式如下。

  我们可以通过声网Agora SDK 来快速实现视频通话。在这样的视频通话场景中,声网Agora SDK 具备几个优势:

  12    func shouldStart() { }

  15}

  7agoraKit.enableVideo()

  通过以上实现过程,我们很容易理解 ARKit 的限制,比如:

  6agoraKit.setClientRole(.broadcaster)

  我们曾在之前《基于ARKit与Agora SDK实现AR视频会议》文章中分享了详细的实现步骤,大家也可以访问「阅读原文」查看源码。

let configuration = ARWorldTrackingConfiguration()

广告位
标签: 实时视频通话   声网   龚宇华