-
Notifications
You must be signed in to change notification settings - Fork 4
dotengine_ios_sdk
2016-11-30 更新
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 主要包含两部分, DotEngineKit
是dotEngine的主体操作类, DotEngineDelegate
是回调类.
+(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 为一个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发生错误会产生此回调
-(void)dotEngine:(DotEngineKit*)engine onLocalAudioFrame:(DotEngineAudioFrame*)frame;
如果用户还需要对本地的音频做其他的处理, 可以实现这个回调.
更多的信息可以查看自定义音视频
-(void)dotEngine:(DotEngineKit*)engine onRemoteAudioFrame:(DotEngineAudioFrame*)frame userId:(NSString*)userId;
如果用户需要对远程用户的音频做其他的处理, 可以实现这个回调.
更多的信息可以查看自定义音视频
-(void)dotEngine:(DotEngineKit*)engine onLocalVideoFrame:(DotEngineVideoFrame*)frame;
如果用户需要对本地的视频做其他的处理, 可以实现这个回调.
更多的信息可以查看自定义音视频
-(void)dotEngine:(DotEngineKit*)engine onRemoteVideoFrame:(DotEngineVideoFrame*)frame userId:(NSString*)userId;
如果用户需要对远程的视频做其他的处理, 比如自定义渲染,可是实现这个回调.
更多的信息可以查看自定义音视频
- 介绍
- 客户端SDK
- 自定义音视频输入输出
- 服务端SDK
- 其他