资讯专栏INFORMATION COLUMN

如何快速实现FaceTime多人视频效果

ashe / 3061人阅读

摘要:我们今天来分享几个往年的热门话题,并讲解基于声网如何来实现。如果基于声网来实现,我们只需要利用控制好对音频视频流的发送逻辑即可。如果你基于声网尝试实现了其它效果,并写在自己的博客中,欢迎在评论中分享。

一年一度的 WWDC 开幕了。我们看了来自各个勤劳媒体的回顾与解读。在这些新功能中,最吸引我们的还是最新更新的 FaceTime。

这次 FaceTime 不仅开始支持群组视频通话,还可以在视频通话时,判断谁在说,并自动放大他的视频窗口。乍看上去,很是惊艳。不过如果是基于声网视频通话SDK来实现,并不复杂,只需调用几个接口即可实现。

其实,在近些年的各种大型活动上,有不少与视频通话相关的“惊艳”功能,都成为当时的热门话题。我们今天来分享几个往年的“热门话题”,并讲解基于声网SDK如何来实现。

FaceTime 视频窗口自动调节

FaceTime 这次更新后新增多人群组视频通话。在通话过程中,如果你正在说话,那么你的视频窗口就会自动放大。( 点击这里观看视频)

其实这个功能通过声网 SDK 很容易实现,开发者不需要懂得如何玩转AI,只需要使用几个接口即可。我们在 SDK 中首先要实现多人视频通话功能,然后利用接口回调用户uid,了解是哪位用户正在说话,然后调整UI,让该用户窗口变为最大。具体调用的接口如下:

- (int)enableAudioVolumeIndication:(NSInteger)interval
                            smooth:(NSInteger)smooth;//启用说话者音量提示
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
      activeSpeaker:(NSUInteger)speakerUid;//返回正在说话的用户uid
FaceTime:视频预览

从 FaceTime 诞生起就有一个功能,在发起视频通话后,即便通话未被接听,用户也能在自己手机上看到自己的视频画面。

从实现角度来讲,我们只需要在开始发送音频、视频流之前,将视频数据渲染至界面上就可以达到这个效果。具体的接口调用如下:

setupLocalVideo()//设置预览视图
startPreview()//启动视频预览
Google Duo:Knock Knock

在2016年的 Google I/O 上,Google 发布了一款即时通讯工具 Allo,以及一款视频通话应用 Google Duo。两年过去了,Allo 项目已经被暂停,而主打视频通话的 Duo 却有着令人欣喜的用户增长。

在 Duo 中,有一个“Knock Knock”功能,在视频通话接通之前,被呼叫的一方能看到对方的实时视频画面,而呼叫的一方则看不到。就好像,有人敲了你的门,你凑近门眼,看到门外是朋友还是家人。

如果基于声网 SDK 来实现,我们只需要利用 API 控制好对音频、视频流的发送逻辑即可。在视频通话被接听之前,呼叫方与被呼叫方需要调用的接口如下。

呼叫方:

muteLocalAudioStream(true)//禁止发送音频
muteLocalVideoStream(false)//发送视频
joinChannel()//进入频道

被呼叫方:

muteLocalAudioStream(true)//禁止发送音频
muteLocalVideoStream(true)//禁止发送视频
setupRemoteVideo()//绑定主叫方视图
joinChannel()//进入频道

在通话被接听后,我们需要将此前的部分接口参数进行修改,具体如下。

呼叫方:

muteLocalAudioStream(false)//发送音频
setupRemoteVideo//设置远端视频显示属性

被呼叫方:

muteLocalAudioStream(false)//发送音频
muteLocalVideoStream(false)//发送视频
Snapchat:实时贴纸

在视频通话中,给自己添加各种贴纸和特效,现在已经不算非常新奇了。而最初,Snapchat 在直播中加入该功能时,确实艳惊四座,随即便成为了一种趋势。再回望昨晚的 WWDC,苹果不也给 FaceTime 增加了同类功能么?

首先,开发者可以通过自研的美颜库,或第三方库来对视频进行前处理,然后通过声网 SDK 进行渲染和传输。在这里,开发者可以通过以下两种方式来调用SDK的接口。

方式一:利用自采集 API
   setExternalVideoSource(true, useTexture: true, pushMode: true)
   pushExternalVideoFrame()
方式二:自定义视频源(视频通话 SDK 2.1及以上版本支持)

步骤 1:实现 AgoraVideoSourceProtocol 的接口,构建自定义的 Video source 类

在获取 Buffer 类型 (bufferType) 的实现中指定视频采集使用的 Buffer 类型

在初始化视频源 (shouldInitialize) 中准备好系统环境,进行初始化参数等设置

在启动视频源 (shouldStart) 中开始采集视频数据

将采集到的数据通过 AgoraVideoFrameConsumer Protocol 定义的接口传给 Media Engine

在停止视频源 (shouldStop) 中停止采集视频数据

在释放视频源 (shouldDispose) 中释放硬件等系统资源

步骤 2:创建自定义的视频源对象

步骤 3:通过 Media Engine 的设置视频源 (setVideoSource) 方法把自定义的视频源对象设置给 Media Engine

步骤 4:Media Engine 会在适当的实际调用自定义视频源中实现的AgoraVideoSourceProtocol 的方法

以上,我们仅以 iOS 为例,列出了其中的接口调用逻辑。当然对于其他操作系统,比如 macOS、Android 等系统,我们只需要少做调整也可以实现。详细的接口与参数,请访问开发文档阅读。想自己实现 FaceTime?自己动手尝试一下吧。

如果你基于声网SDK尝试实现了其它效果,并写在自己的博客中,欢迎在评论中分享。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17067.html

相关文章

  • iOS 12正式版新特性总结

    摘要:距离苹果发布会举行已久,苹果在昨日月开始向用户推送版,据称本次的更新内容主要是性能方面的提升,打开相机的速度提升,屏幕键盘呼出速度提升,其它启动速度提升倍。在搭载系统和芯片或更高版本的苹果设备上,新增了一个工具测距仪。 距离苹果WWDC发布会举行已久,苹果在昨日(9月18)开始向用户推送iOS 12 GM版,据称本次iOS的更新内容主要是性能方面的提升,打开相机的速度提升70%,屏幕键...

    gougoujiang 评论0 收藏0
  • 无连麦,不直播,都在说的直播利器连麦互动到底是啥?

    摘要:又拍云连麦互动直播方案架构图连麦互动直播方案有两点优势主播和连麦观众使用了实时音视频来进行连麦互动,实时性高,观众看到的合成画面里主播和观众的互动也是同步实时的,保证延时小,减少带宽压力。 在2016年的互联网关键词中,「直播」毫无疑问排在前列。从年中开始,直播便接替短视频成为新的大流量入口。参与直播的人,也从网红逐渐扩大到全民,内容也从最初的单一娱乐向更多元化的方向发展。 直播被普遍...

    马龙驹 评论0 收藏0
  • 红点王宇航:以实时连接场景为目标的一些技术架构探索

    摘要:文红点联合创始人王宇航我今天分享的主题,是以实时连接场景为目标的一些技术架构探索。主要是关于红点在产品研发过程中,我们的技术选择,架构变化,还有这个过程中,我们的一些考虑。红点的第一个版本红点的第一个版本功能比较简单。 showImg(https://segmentfault.com/img/bVrBAw); 文 | 红点联合创始人 王宇航 我今天分享的主题,是以实时连接场景为目标的一...

    voyagelab 评论0 收藏0
  • 从0开始,搭建一个完整的iOS音视频通信系统

    摘要:今天图鸭君就和你说一下,如何从开始,搭建一个完整的音视频通信系统。在图鸭科技提供的中,我们可以看到对外只有两个头文件,可见快速集成音视频通信并不是那么复杂。完成上述所有操作后,甲乙建立通讯。 现在市面上有许多音视频通信软件,比如Facetime。你是否想过开发一款独属于自己的音视频通信软件?在iOS开发中,音视频通讯开发一直比较困难:昂贵的开发成本、较高的技术门槛让很多开发者和公司望而...

    hlcfan 评论0 收藏0
  • 一套代码快速实现一个语音聊天室

    摘要:接下来,我们来看一下基于声网视频通话,实现语音聊天室的步骤吧。更便于已经开发视频连麦直播的开发者,进一步实现语音聊天室。而在教育应用中也有师生之间的语音聊天室。 前言:本文将简要分享几个语音聊天室的应用场景,并讲述基于声网SDK,实现语音聊天室的步骤。 语音聊天在泛娱乐社交行业中有着重要的地位,行业中很多佼佼者也都为用户提供了语音聊天室,甚至有些平台最初就是依托语音聊天起家的,比如大家...

    kevin 评论0 收藏0

发表评论

0条评论

ashe

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<