Skip to content

dotengine_ios_sdk

notedit edited this page May 7, 2017 · 1 revision

2016-11-30 更新

SDK使用

dotEngine iOS SDK 提供静态库,只需要将静态库和头文件导入项目就可以使用.

dotEngine iOS SDK 支持iOS8和iOS8+

dotEngine iOS SDK 需要如下的库:

  • VideoToolbox.framework
  • SystemConfiguration.framework
  • OpenGLES.framework
  • GLKit.framework
  • CoreVideo.framework
  • CoreTelephony.framework
  • CoreMedia.framework
  • CoreGraphics.framework
  • AVFoundation.framework
  • AudioToolbox.framework
  • Foundation.framework
  • UIKit.framework
  • libcucore.tbd
  • libc++.tbd

SDK API

sdk api 主要包含两部分, DotEngineKit 是dotEngine的主体操作类, DotEngineDelegate是回调类.

DotEngineKit

创建DotEngineKit实例

+(instancetype)sharedInstanceWithDelegate:(id<DotEngineDelegate>)delegate;

该方法创建一个DotEngineKit的实例, delegate 为DotEngineDelegate类

开启本地音视频

-(void)startLocalMedia;

该方法初始化本地的音视频, 可以用来在加入房间之前进行视频的预览. 如果不调用此方法, joinRoom方法会自动初始化本地的音视频. 此方法会产生 dotEngineDidAddLocalAudioTrack didAddLocalView 回调

关闭本地音视频

-(void)stopLocalMedia;

该方法结束本地的音视频, 需要在调用leaveRoom之后调用. 此方法会产生dotEngineDidRemoveLocalAudioTrack didRemoveLocalView回调

加入房间

-(void)joinRoomWithToken:(NSString*)token;

加入一个房间, 房间和用户信息已经包含在token中, dotEngine的服务端会自动匹配. token每次从服务端获取.

为防止token泄露,最好不要重复使用token. 此方法会产生didJoined回调

离开房间

-(void)leaveRoom;

离开一个房间, 此方法并不会停止本地音视频, 如果要关闭本地视频预览, 在调用leaveRoom后调stopLocalMedia.

此方法会产生didLeave回调.

设置本地音视频发送质量

-(void)setupVideoProfile:(DotEngineVideoProfile)profile;

dotEngine设置了多种视频传输质量来适配各种使用场景. 此方法可以设置本地视频的传输质量. 此方法需要在开启本地音视频之前调用. DotEngineVideoProfile 默认为DotEngine_VideoProfile_240P.

DotEngineVideoProfile的种类为:


typedef NS_ENUM(NSInteger, DotEngineVideoProfile)
{
    
    DotEngine_VideoProfile_120P = 0,        // 160x120   15   80
    DotEngine_VideoProfile_120P_2 = 1,		// 120x160   15   80
    DotEngine_VideoProfile_120P_3 = 2,		// 120x120   15   60
    
    DotEngine_VideoProfile_180P = 10,		// 320x180   15   160
    DotEngine_VideoProfile_180P_2 = 11,		// 180x320   15   160
    DotEngine_VideoProfile_180P_3 = 12,		// 180x180   15   120
    
    DotEngine_VideoProfile_240P = 20,		// 320x240   15   200
    DotEngine_VideoProfile_240P_2 = 21,		// 240x320   15   200
    DotEngine_VideoProfile_240P_3 = 22,		// 240x240   15   160
    
    DotEngine_VideoProfile_360P = 30,		// 640x360   15   400
    DotEngine_VideoProfile_360P_2 = 31,		// 360x640   15   400
    DotEngine_VideoProfile_360P_3 = 32,		// 360x360   15   300
  
    DotEngine_VideoProfile_360P_4 = 33,     // 640x360   30   800
    DotEngine_VideoProfile_360P_5 = 34,     // 360x640   30   800
    DotEngine_VideoProfile_360P_6 = 35,     // 360x360   30   600
    
    DotEngine_VideoProfile_480P = 40,		// 640x480   15   500
    DotEngine_VideoProfile_480P_2 = 41,		// 480x640   15   500
    DotEngine_VideoProfile_480P_3 = 42,		// 480x480   15   400
    
    DotEngine_VideoProfile_480P_4 = 43,		// 640x480   30   750
    DotEngine_VideoProfile_480P_5 = 44,		// 480x640   30   750
    DotEngine_VideoProfile_480P_6 = 45,		// 480x480   30   680
    DotEngine_VideoProfile_480P_7 = 46,		// 640x480   15   1000
    
    DotEngine_VideoProfile_720P = 50,		// 1280x720  15   1000
    DotEngine_VideoProfile_720P_2 = 51,		// 720x1280  15   1000
    DotEngine_VideoProfile_720P_3 = 52,		// 1280x720  30   1700
    DotEngine_VideoProfile_720P_4 = 53,		// 720x1280  30   1700
    
};

设置音视频采集模式

-(void)setCaptureMode:(DotEngineCaptureMode)captureMode;

此方法为高级api, 设置音视频的采集模式. 使用场景为自定义音视频输入.

DotEngineCaptureMode 有三种模式:

typedef NS_ENUM(NSInteger,DotEngineCaptureMode){
    
    DotEngine_Capture_Default,
    DotEngine_Capture_Custom_Video,
    DotEngine_Capture_Custom_Video_Audio

};

DotEngine_Capture_Default: 为默认模式, 使用dotEngine内置的音视频采集api.

DotEngine_Capture_Custom_Video: 为自定义视频模式, 使用场景为用户自行采集视频, 需要对采集的视频进行更多的处理, 比如添加滤镜, 增加美颜,视觉分析,然后再把处理过的视频数据送给dotEngine.

DotEngine_Capture_Custom_Video_Audio: 为自定义音频和视频, 此模式暂时未开放.

更详细的用法请参考自定义输入和输出.

切换前后摄像头

-(void)switchCamera;

切换前后摄像头, 默认是优先选择前置摄像头.

视频切换

-(void)enableVideo:(BOOL)enable;

在房间里用户有可能需要在音视频的切换,此方法可以动态的开关视频. 调用此方法后, 状态会传播给房间内其他的用户. 此方法会产生didEnableVideo 回调

音频切换

-(void)enableAudio:(BOOL)enable;

静音模式和非静音模式的切换, 调用此方法后, 状态会传播给房间内其他的用户. 此方法会产生didEnableAudio回调

得到某个用户的音频状态

-(BOOL)isAudioEnable:(NSString*)userId;

得到某个用户的音频状态, 返回yes 或者 no

得到某个用户的视频状态

-(BOOL)isVideoEnable:(NSString*)userId;

得到某个用户的视频状态, 返回yes 或者 no

开启/关闭扬声器

-(void)enableSpeakerphone:(BOOL)enable;

发送本地视频

-(void) sendSampleBuffer:(CMSampleBufferRef ) sampleBuffer;

当DotEngineCaptureMode 为DotEngine_Capture_Custom_Video, DotEngine_Capture_Custom_Video_Audio时,需要输入外部的视频源.

更多内容可以产看自定义音视频输入.

DotEngineDelegate

DotEngineDelegate 为一个delegate. 处理DotEngineKit的回调.

有用户加入房间

-(void)dotEngine:(DotEngineKit*) engine didJoined:(NSString*)userId;

当有用户加入房间时的回调, 包括远程用户和本地用户.

有用户离开房间

-(void)dotEngine:(DotEngineKit*) engine didLeave:(NSString*)userId;

当有用户离开房间时的回调, 包括远程用户和本地用户.

本地视频视图加入回调

-(void)dotEngine:(DotEngineKit*) engine  didAddLocalView:(UIView*)view;

用户在调用startLocalMedia后, 会回调此方法.

如果view没有被添加到父视图中, 该视图中的视频不会被渲染. 如果用户想自定义本地视频的渲染可以忽略此方法.

远程视频视图加入回调

-(void)dotEngine:(DotEngineKit*) engine  didAddRemoteView:(UIView*)view withUser:(NSString*)userId;

当远程用户的视频准备好的时候会调用此方法.

如果view没有被添加父视图中,该视图中的视频不会被渲染. 如果用户想自定义远程视频的渲染可以忽略此方法.

本地视频视图移出回调

-(void)dotEngine:(DotEngineKit*) engine didRemoveLocalView:(UIView*)view;

用户在调用stopLocalMedia后, 会回调此方法. dotEngine 不会做view的移出操作, 需要用户自己完成.

远程视频视图移出回调

-(void)dotEngine:(DotEngineKit*) engine didRemoveRemoteView:(UIView*)view withUser:(NSString*)userId;

当远程用户的视频移出的时候会调用此方法.dotEngine 不会做view的移出操作, 需要用户自己完成.

本地音频加入回调

-(void)dotEngineDidAddLocalAudioTrack;

用户在调用startLocalMedia后, 会回调此方法. 视频模式下可以不用处理.

远程音频加入回调

-(void)dotEngine:(DotEngineKit *)engine didAddRemoteAudioTrack:(NSString*)userId;

远程用户音频准备好的时候回调此方法. 视频模式下可以不用处理.

本地音频移出回调

-(void)dotEngineDidRemoveLocalAudioTrack;

用户在调用stopLocalMedia后, 会调用此方法. 视频模式下可以不用处理.

远程音频移出回调

-(void)dotEngine:(DotEngineKit *)engine  didRemoveRemoteAudioTrack:(NSString *)userId;

远程用户的音频移出的时候会调用此方法. 视频模式下可以不用处理.

用户静音/关闭静音回调

-(void)dotEngine:(DotEngineKit*)engine didEnableAudio:(BOOL)enable userId:(NSString*)userId;

当房间有用户开启静音或者关闭静音是会产生此回调.

用户关闭视频/打开视频回调

-(void)dotEngine:(DotEngineKit*)engine didEnableVideo:(BOOL)enable userId:(NSString*)userId;

当房间内有用户关闭视频或者打开视频会产生此回调.

错误回调

-(void)dotEngine:(DotEngineKit*) engine didOccurError:(int)errorCode;

当dotEngine发生错误会产生此回调

本地AudioFrame 回调

-(void)dotEngine:(DotEngineKit*)engine onLocalAudioFrame:(DotEngineAudioFrame*)frame;

如果用户还需要对本地的音频做其他的处理, 可以实现这个回调.

更多的信息可以查看自定义音视频

远程AudioFrame 回调

-(void)dotEngine:(DotEngineKit*)engine onRemoteAudioFrame:(DotEngineAudioFrame*)frame userId:(NSString*)userId;

如果用户需要对远程用户的音频做其他的处理, 可以实现这个回调.

更多的信息可以查看自定义音视频

本地VideoFrame 回调

-(void)dotEngine:(DotEngineKit*)engine onLocalVideoFrame:(DotEngineVideoFrame*)frame;

如果用户需要对本地的视频做其他的处理, 可以实现这个回调.

更多的信息可以查看自定义音视频

远程VideoFrame 回调

-(void)dotEngine:(DotEngineKit*)engine onRemoteVideoFrame:(DotEngineVideoFrame*)frame userId:(NSString*)userId;

如果用户需要对远程的视频做其他的处理, 比如自定义渲染,可是实现这个回调.

更多的信息可以查看自定义音视频

Clone this wiki locally