游密音视频SDK(Video SDK)是游密科技公司旗下的一款专注于为开发者提供实时语音技术和服务的云产品。我们的研发团队来自腾讯,其中不少是拥有10年以上音视频经验的专家,专业专注;我们的服务端节点部署遍布全球,为用户提供高效稳定的实时云服务,且弹性可扩展,真正做到亿级支撑、毫秒级延迟、通话清晰流畅、按需取用,为用户带来优质的通话体验。通过Video SDK,能够让您轻松实现游戏内语音通话、主播、指挥、组队等多项功能。
在游密官网注册游密账号。
Appkey
在控制台添加应用,获得接入需要的Appkey、Appsecret。
根据游戏使用的游戏引擎与开发语言,在下载入口下载对应的SDK包体。
macOS 平台集成Video SDK:集成方法。
语音SDK中有两个子文件夹:include、lib,下面依次介绍下这两个子文件夹。
include
:SDK的头文件。
重点介绍inlude下的需要使用到的重要文件。
YMVoiceService.h
封装了语音SDK的全部功能接口,集成方可通过[YMVoiceService getInstance]直接调用。VoiceEngineCallback.h
包含需要实现的语音SDK的回调接口协议。YouMeConstDefine.h
包含错误码定义等各类枚举类型定义。lib
:macOS库文件,包含libyoume_voice_engine.a、youme_voice_engine_mac.dylib(动态库)、libYouMeCommon.a 和 libffmpeg3.3.a 文件。将SDK放置到xcode工程目录下(可视实际情况自行放置)。
添加头文件和依赖库:
打开XCode工程,找到工程目录,右键点击选择“Add Files to ...”,然后将SDK下的include文件夹加入进来。
libyoume_voice_engine.a
libYouMeCommon.a
libffmpeg3.3.a
libc++.tbd
libsqlite3.0.tbd
libz.dylib
libz.1.2.5.tbd
libresolv.9.tbd
SystemConfiguration.framework
CoreTelephony.framework
AVFoundation.framework
AudioToolBox.framework
CFNetwork.framework
VideoToolbox.framework
CoreVideo.framework
VideoDecodeAcceleration.framework
info.plist
中新加NSMicrophoneUsageDescription
键,值为字符串(授权弹窗出现时提示给用户)。首次录音时会向用户申请权限。
info.plist
中新加NSCameraUsageDescription
键,值为字符串(授权弹窗出现时提示给用户)。首次开启摄像头时会向用户申请权限。
API的调用可使用“[YMVoiceService getInstance]”来直接操作,接口使用的基本流程为初始化
->收到初始化成功回调通知
->加入语音频道
->收到加入频道成功回调通知
->使用其它接口
->离开语音频道
->反初始化
,要确保严格按照上述的顺序使用接口。
[YMVoiceService getInstance] initSDK
YOUME_EVENT_INIT_OK
事件后,[YMVoiceService getInstance] setServerRegion
[YMVoiceService getInstance] setVideoFps
[YMVoiceService getInstance] setVideoNetResolutionWidth
[YMVoiceService getInstance] setVideoCodeBitrate
[YMVoiceService getInstance] setVideoHardwareCodeEnable
[YMVoiceService getInstance] joinChannelSingleMode
在收到YOUME_EVENT_JOIN_OK
事件后,
开关麦克风:[[YMVoiceService getInstance] setMicrophoneMute:false];
开关扬声器:[[YMVoiceService getInstance] setSpeakerMute:false];
控制自己的摄像头打开:[[YMVoiceService getInstance] startCapture];
控制自己的摄像头关闭:[[YMVoiceService getInstance] stopCapture];
创建渲染视图: [YMVoiceService getInstance ] createRender
使用其他接口和回调事件:
切换摄像头:[YMVoiceService getInstance] switchCamera
是否屏蔽他人视频: [[YMVoiceService getInstance] maskVideoByUserId:(NSString*) userId mask:(bool) mask];
创建自己的视频流渲染view:[[YMVoiceService getInstance ] createRender:local_userid parentView:parentView];
收到 YOUME_EVENT_OTHERS_VIDEO_ON
事件后,在该事件里创建视频渲染组件,渲染远端视频
[[YMVoiceService getInstance ] createRender:other_userid parentView:parentView];
远端视频会渲染在返回的UIView里。
删除渲染绑定:[[YMVoiceService getInstance] deleteRender:userid];
离开房间:[YMVoiceService getInstance] leaveChannelAll
[YMVoiceService getInstance] unInit
使用者要遵守协议 VoiceEngineCallback
并实现相关函数(回调函数)。回调都在子线程中执行,不能用于更新UI等耗时操作。
//事件上报回调
-(void) onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param {
}
//RestAPI回调
-(void) onRequestRestAPI: (int)requestID iErrorCode:(YouMeErrorCode_t) iErrorCode query:(NSString*) strQuery result:(NSString*) strResult {
}
//获取频道用户列表回调
-(void) onMemberChange:(NSString*) channelID changeList:(NSArray*) changeList {
}
//SDK内置连麦抢麦接口对应的回调
- (void) onBroadcast:(YouMeBroadcast_t)bc strChannelID:(NSString*)channelID strParam1:(NSString*)param1 strParam2:(NSString*)param2 strContent:(NSString*)content;
//音视频通话码率、丢包率回调
- (void) onAVStatistic:(YouMeAVStatisticType_t)type userID:(NSString*)userID value:(int) value;