游密音视频SDK(Video SDK)是游密科技公司旗下的一款专注于为开发者提供实时音视频技术和服务的云产品。我们的研发团队来自腾讯,其中不少是拥有10年以上音视频经验的专家,专业专注;我们的服务端节点部署遍布全球,为用户提供高效稳定的实时云服务,且弹性可扩展,真正做到亿级支撑、毫秒级延迟、通话清晰流畅、按需取用,为用户带来优质的通话体验。通过Video SDK,能够让您轻松实现游戏内语音通话、主播、指挥、组队等多项功能。
在游密官网注册游密账号。
Appkey
在控制台添加应用,获得接入需要的Appkey、Appsecret。
根据游戏使用的游戏引擎与开发语言,在下载入口下载对应的SDK包体,最新版本在专属支持群可以直接联系我们获取。
iOS 平台集成Video SDK:集成方法
视频SDK的libs文件夹中存放的动态库:YoumeLiveVideoEngine.framework
,视频主要功能集成使用这个动态库,下面介绍这个动态库的使用。
#import <YoumeLiveVideoEngine/YMLiveVideoEngine.h>
#import <YoumeLiveVideoEngine/YMLiveVideoEngineDelegate.h>
YMLiveVideoEngine.h
封装了视频SDK的全部功能接口,通过[YMLiveVideoEngine shareInstance]调用。YMLiveVideoEngineDelegate.h
包含需要实现的视频SDK的回调接口协议,通过声明YMLiveVideoEngineDelegate用于监听回调。info
新加Privacy - Microphone Usage Description
键,值为字符串,比如“语音聊天需要录音权限”。
首次录音时会向用户申请权限。配置方式如图(选择Private-Microphone Usage Description)。
初始化Video SDK:其中appKey和appSecret为在游密后台申请的App Key和App Secret。regionId:IM服务器区域,一般使用0即RTC_CN_SERVER表示中国,其余设置值可查看官网文档-服务器部署地区定义。
//初始化引擎
[[YMLiveVideoEngine shareInstance] initSDK:(id)self
appkey:appKey
appSecret:appSecret
regionId:RTC_DEFAULT_SERVER
serverRegionName:@""];
实现回调消息
-(void) onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param
{
if (eventType == YOUME_EVENT_INIT_OK)
{
NSLog(@"-----初始化引擎成功");
}
else if (eventType == YOUME_EVENT_INIT_FAILED)
{
NSLog(@"-----初始化引擎失败");
}
}
onYouMeEvent收到初始化成功消息YOUME_EVENT_INIT_OK后: 设置分辨率:YMVideoEncoderConfiguration对象的参数width为宽,参数height为高,设置帧率:其中fps为帧率(1-30),默认15帧。
//分辨率、帧率设置
YMVideoEncoderConfiguration *config = [[YMVideoEncoderConfiguration alloc] init];
config.width = dimensionWidth;
config.height = dimensionHeight;
config.frameRate = frameRate;
config.bitrate = 0;
[self.youmeEngine setVideoEncoderConfiguration:config];
加入频道: 其中第一个参数为channelID:频道标识,userID:用户标识,autoRecv:是否自动接收频道内其他有人的视频,true表示自动接收,如果为false,需要调用 setUsersVideoInfo指定接收流后才会收到对方视频。用户角色说明:加入频道默认的角色为观众角色YOUME_USER_LISTENER,如需发布流请在加入频道成功后调用 setClientRole设定为主播角色YOUME_USER_HOST。
//开始加入频道
[self.youmeEngine joinChannel:self.roomId
userId:self.userId
autoRecv:YES];
实现回调消息
//本端加入频道成功
- (void)liveVideoEngine:(YMLiveVideoEngine *)engine didJoinChannel:(NSString *)userId
{
NSLog(@"-----本端已加入频道");
}
[self.youmeEngine setClientRole:YOUME_USER_HOST];
YouMeVideoRenderMode
类型定义。[self.youmeEngine setupLocalVideo:self._viewBig
userId:userId
mode:YOUME_VIDEO_RENDER_MODE_HIDDEN];
[self.youmeEngine muteLocalAudioStream:NO];
[self.youmeEngine muteLocalVideoStream:NO];
[self.youmeEngine setClientRole:YOUME_USER_LISTENER];
[self.youmeEngine muteLocalAudioStream:YES];
[self.youmeEngine muteLocalVideoStream:YES];
[self.youmeEngine deleteLocalVideo:userId];
回调didJoinedOfUid
触发时,即收到其他用户发布音视频流的回调事件,将该用户的视频流与远端视频渲染视图(UIView)绑定,其中第一个参数为渲染视图放置的父视图,userId为远端用户的userID,mode为视频画面填充模式。
[self.youmeEngine setupRemoteVideo:videoView
userId:userId
mode:YOUME_VIDEO_RENDER_MODE_HIDDEN];
回调didOfflineOfUid
触发时,即收到其他用户取消发布音视频流的回调事件,解绑该用户视频流与视频渲染视图(UIView),参数为本端加入频道时的userID。
[self.youmeEngine deleteRemoteVideo:userId];
离开频道。
[self.youmeEngine leaveChannel];
销毁引擎。
[self.youmeEngine destory];