随着智能手机的普遍及4G‘5G通信网络的快速发展,现如今,手机端游戏APP及直播类APP倍受用户的喜爱。而因为人们现在空闲时间多也形成了以手机娱乐,交流,购物等习惯,处处离不开手机的存在,所以以手机为主导,各种以消磨人们闲暇时间的各种应用一一进入应用市场。各种游戏娱乐应用中又有从虚拟游戏APP升级成的视频直播游戏APP,而且倍受大众的喜爱。而我人广州龙其仕游乐设备从视频直播抓娃娃就积累了各种开发经验,如今视频直播推币游戏APP已帮客户上线多家,并得到了市场玩家的肯定及喜爱,下面,为了让客户更直观了解iOS视频直播推币机游戏APP功能实现流程,下面我们一起探讨吧!
游戏直播的应用场景是用户在使用游戏类 App 时,使用第三方直播类 App 进行游戏直播。Zego 提供了对游戏直播场景的支持,建议开发者按照下述步骤,逐渐熟悉并掌握游戏直播技术的使用与开发。
zego提供包括游戏直播iOS/Android demo和iOS/Android SDK下载,详细的demo运行指引和SDK集成指引请阅读《游戏直播概述》。
下面以iOS环境为例,具体讲述游戏直播功能实现流程。
游戏直播的应用场景是用户在使用游戏类 App 时,使用第三方直播类 App 进行游戏直播。
推荐第三方直播类 App 使用 Apple 的 ReplayKit 框架(仅支持 iOS9 及以上系统),及其中的 Broadcast UI Extension、Broadcast Upload Extension (仅支持 iOS10 及以上系统)扩展功能,嵌入到第三方的 App 中。
使用 ReplayKit 实现游戏直播场景的主流程如下:
请注意:
1、上述的流程中,游戏 App 对 ReplayKit 的实现,不在本文的讨论范围内。
2、第三方直播 App 对于 ReplayKit 的功能实现,建议开发者优先参考苹果官方文档,亦可参考 LiveDemo5 中的 GameLive 和 GameLiveUI ,这两个 Target 简单演示了第三方直播 App 如何使用 BroadcastUI 和 BroadcastUpload 实现游戏画面音视频流的输出。
3、为了便于开发者更快理解 LiveDemo5 中的逻辑,下述每节会将功能核心源码片段挑出来并加以讲解。开发者亦可直接阅读 LiveDemo5 源码,两者是一致的。
下文将重点讲述,如何通过 SDK 直播 ReplayKit 传递出的音视频流数据。
1、初始化 ReplayLive
调用如下 API 初始化 ReplayLive,该接口必须在调用 initWithAppID:appSignature: 初始化 SDK 前被调用。
ZegoLiveRoomApi-ReplayLive.h+ (void)prepareReplayLiveCapture;
·LiveDemo5 演示源码:
GameLive Target, ZegoAVKitManager.m
- (void)initZegoLiveApi
{
if (self.zegoLiveApi != nil)
return;
[ZegoLiveRoomApi setUseTestEnv:self.testEnvironment];
// 初始化 ReplayLive [ZegoLiveRoomApi prepareReplayLiveCapture];
NSData *appSign = [self getZegoAppSign];
[ZegoLiveRoomApi setUserID:self.userID userName:self.userName];
// 初始化 SDK _zegoLiveApi = [[ZegoLiveRoomApi alloc] initWithAppID:1 appSignature:appSign];
}
2、开始推流
App 的推流流程,和常规的视频直播推流流程一致,区别是游戏直播场景下的音视频数据,均由 ReplayKit 提供。
SDK 推流流程请参考:初级功能指南-推流
3、ReplayKit 提供音视频数据
音视频数据由 ReplayKit 提供。SDK 提供了两个接口,用于处理 ReplayKit 传递出的 CMSampleBufferRef 数据,分别是:
ZegoLiveRoomApi-ReplayLive.h- (void)handleVideoInputSampleBuffer:(CMSampleBufferRef)sampleBuffer;- (void)handleAudioInputSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType;
App 启动推流,并调用上述两个 API 接收音视频流数据后,SDK 会自动将音视频流推流出去,开发者无需再进行其他操作。
LiveDemo5 中演示了 SDK 从 ReplayKit 中的 SampleHandler 获取数据并处理:
SampleHandler.m// ReplayKit 提供的、在 broadcast 中处理视频和音频数据- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {
switch (sampleBufferType) {
case RPSampleBufferTypeVideo:
// 处理视频数据 [[ZegoAVKitManager sharedInstance] handleVideoInputSampleBuffer:sampleBuffer];
break;
case RPSampleBufferTypeAudioApp:
// 处理音频数据,音频由 App 产生 [[ZegoAVKitManager sharedInstance] handleAudioInputSampleBuffer:sampleBuffer withType:RPSampleBufferTypeAudioApp];
break;
case RPSampleBufferTypeAudioMic:
// 处理音频数据,音频由麦克风产生 [[ZegoAVKitManager sharedInstance] handleAudioInputSampleBuffer:sampleBuffer withType:RPSampleBufferTypeAudioMic];
break;
default:
break;
}
}
到这里,我们简要说明了iOS视频直播推币机游戏游戏直功能实现流程,更多交流,可联系我们广州龙其仕游乐设备!也希望更多资深开发人员加入我们开发的行列,一起探讨视频直播游戏的开发,让音视频及体验度更加优秀。