没错动态音频交互的动作游戏别的金融行业多,SNS影视娱乐现场直播金融行业总之首屈一指,甚么 PK 现场直播、王承恩连麦,除了从今年早已开始热出来的交互式主持人。你可能将听闻过,即使做为观众们所用。那时你也能前述合作开发两个。即使,Github 上早已有了两个总体性开放源码工程项目。

Github URL:https://github.com/AgoraIO-usecase/agoralive

那个工程项目原先是声网Agora 的「Agora Live」,是为的是易于声网 Agora SDK 使用者新体验交互现场直播情景而合作开发的。上周她们不但升级换代了应用领域,不但再次结构设计了 UI,并减少了王承恩连麦现场直播、PK 现场直播、交互式主持人机能。所以她们还会渐渐强化这本源代码。

所推荐两个牛逼的现场直播开放源码工程项目插图

图:旧版 Aogra Live(iOS)

总之了,你在苹果公司 App Store 也能查到那个应用领域,Android 使用者也能在声网官方网站找出浏览镜像,或是他们用Github 的源代码校对这份也行,只须要代替当中的 AppID。

它同时实现的这些炙手可热情景

旧版 Agora Live 目前早已支持四种时下炙手可热的动态交互情景,包括:

单主持人现场直播情景:这是 Agora Live 初支持的机能,支持美颜、文字消息、添加背景音乐等机能。

王承恩连麦现场直播情景:在现场直播的基础上,还可邀请另外 6 名观众们进行连麦。

PK 现场直播情景:像大家在陌陌、抖音等应用领域中看到的 PK 现场直播一样,主持人能向另两个主持人发起 PK 邀请。两个现场直播间的观众们会同时看到两个主持人在线交互。

交互式主持人情景:与单主持人现场直播情景类似,只不过App 会为主持人生成两个动态的交互式形象,交互式形象的表情会与主持人同步。在现场直播过程中,还能邀请观众们上麦。

所推荐两个牛逼的现场直播开放源码工程项目插图1

App 中所有音频动态交互与文字消息、控制指令(如邀请上麦),都是基于声网 Agora Native SDK 、声网 Agora 动态消息 RTM SDK 同时实现的。

核心机能的同时实现

该开放源码工程项目支持 Android 和 iOS,这里以 Swift 代码为例,Java 代码请大家自行查看。

那个示例中,现场直播间、房主与观众们连麦,都是基于声网Agora Native SDK 同时实现的。我们通过以下代码能让使用者加入 RTC 频道,同时实现音频的互通。

func join(channel: String, token: String? = nil, streamId: Int, success: Completion = nil) {agoraKit.join(channel: channel, token: token, streamId: streamId) { [unowned self] inself.channelStatus = .ingif let success = success {success()}}}

在现场直播间中的文字消息、控制指令(比如邀请观众们上麦)等,都是基于 Agora 动态消息 RTM SDK 同时实现的。在这里我们集成 RTM SDK 后,通过以下代码让使用者加入 RTM 频道。

func joinChannel(_ id: String, delegate: AgoraRtmChannelDelegate, success: Completion, fail: ErrorCompletion) {do {let channel = try createChannel(id: id, delegate: delegate)channel.join { (errorCode) inswitch errorCode {case .channelErrorOk:self.log(info: “rtm join channel success”, extra: “channel id: \(id)”)if let success = success {success()}default:let error = AGEError.rtm(“join channel fail”,code: errorCode.rawValue,extra: “channel: \(id)”)self.log(error: error)if let fail = fail {fail(error)}}}} catch {log(error: error, extra: “create channel fail”)if let fail = fail {fail(error)}}}

美颜与交互式形象是通过接入 FaceUnity 的服务来同时实现的。能结合 FUClient 那个类的同时实现与 FaceUnity 的文档来集成美颜模块。

typedef void (^FUCompletion)(void);typedef void (^FUErrorCompletion)(NSError *error);typedef NS_ENUM(NSUInteger, FUFilterItemType) {FUFilterItemTypeSmooth = 1,FUFilterItemTypeBrighten = 2,FUFilterItemTypeThinning = 3,FUFilterItemTypeEye = 4};@interface FUFilterItem : NSObject@property (nonatomic, assign) FUFilterItemType type;@property (nonatomic, assign) float defaultValue;@property (nonatomic, assign) float minValue;@property (nonatomic, assign) float maxValue;@property (nonatomic, assign) float value;@property (nonatomic, copy) NSString *funcName;@end@interface FUClient : NSObject– (void)loadFilterWithSuccess:(FUCompletion)success fail:(FUErrorCompletion)fail;– (void)setFilterValue:(float)value withType:(FUFilterItemType)type;– (FUFilterItem *)getFilterItemWithType:(FUFilterItemType)type;– (void)loadBackgroudWithSuccess:(FUCompletion)success fail:(FUErrorCompletion)fail;– (void)loadAnimoji:(NSString *)name success:(FUCompletion)success fail:(FUErrorCompletion)fail;– (void)renderItemsToPixelBuffer:(CVPixelBufferRef)pixelBuffer;– (void)destoryAllItems;@end

视频流从 AVCaptureSession 流出,流入 FaceUnity 进行前处理,然后进入 Agora RTC SDK 发送到远端。

func camera(_ camera: AGESingleCamera, position: AGECamera.Position, didOutput sampleBuffer: CMSampleBuffer) {cameraStreamQueue.async { [unowned self] inguard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {return}CVPixelBufferLockBaseAddress(pixelBuffer, .init(rawValue: 0))let timeStamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer)if self.enhancement.beauty == .on || self.enhancement.appearance != .none {self.enhancement.renderItems(to: pixelBuffer)}self.consumer?.consumePixelBuffer(pixelBuffer,withTimestamp: timeStamp,rotation: .rotationNone)CVPixelBufferUnlockBaseAddress(pixelBuffer, .init(rawValue: 0))}}

大家能使用 Github 中的源代码,在声网官方网站注册两个账号,在后台获取 AppID 后,代替掉源代码中的 AppID 即好了,能一次同时实现王承恩连麦现场直播、单主持人现场直播、PK 现场直播、交互式主持人 4 种动态交互情景。

官方表示还将在接下来几个月对 repo 中的代码进一步梳理、强化,提升源代码的易用性、可读性。所以,还会减少新的情景。

怎么样老铁,去试试吧:

Github URL:https://github.com/AgoraIO-usecase/agoralive

作者 nasiapp

在线客服
官方客服
我们将24小时内回复。
12:01
您好,有任何疑问请与我们联系!

选择聊天工具: