-
Notifications
You must be signed in to change notification settings - Fork 4
dotengine_android_sdk
2016-12-01 更新
dotEngine Android SDK 提供以aar格式打包的库. 导入到项目中即可以使用.
需要开启的权限为:
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="21"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
SDK API 主要包括两部分, DotEngine
和 DotEngineListener
boolean sharedInstanceWithListener(Context context, final DotEngineListener listener);
该方法创建一个DotEngine的实例, listener 为DotEngineListener 类.
void setupVideoProfile(DotEngineVideoProfileType dotEngineVideoProfileType);
dotEngine设置了多种视频传输质量来适配各种使用场景. 此方法可以设置本地视频的传输质量. 此方法需要在开启本地音视频之前调用. DotEngineVideoProfile 默认为DotEngine_VideoProfile_240P.
DotEngineVideoProfile的种类为:
// w h fps bits
DotEngine_VideoProfile_120P(0, 160, 120, 15, 80),
DotEngine_VideoProfile_120P_2(1, 120, 160, 15, 80),
DotEngine_VideoProfile_120P_3(2, 120, 120, 15, 60),
DotEngine_VideoProfile_180P(10, 320, 180, 15, 160),
DotEngine_VideoProfile_180P_2(11, 180, 320, 15, 160),
DotEngine_VideoProfile_180P_3(12, 180, 180, 15, 120),
DotEngine_VideoProfile_240P(20, 320, 240, 15, 200),
DotEngine_VideoProfile_240P_2(21, 240, 320, 15, 200),
DotEngine_VideoProfile_240P_3(22, 240, 240, 15, 160),
DotEngine_VideoProfile_360P(30, 640, 360, 15, 400),
DotEngine_VideoProfile_360P_2(31, 360, 640, 15, 400),
DotEngine_VideoProfile_360P_3(32, 360, 360, 15, 300),
DotEngine_VideoProfile_480P(40, 640, 480, 15, 500),
DotEngine_VideoProfile_480P_2(41, 480, 640, 15, 500),
DotEngine_VideoProfile_480P_3(42, 480, 480, 15, 400),
DotEngine_VideoProfile_480P_4(43, 640, 480, 30, 750),
DotEngine_VideoProfile_480P_5(44, 480, 640, 30, 750),
DotEngine_VideoProfile_480P_6(45, 480, 480, 30, 680),
DotEngine_VideoProfile_480P_7(46, 640, 480, 15, 1000),
DotEngine_VideoProfile_720P(50, 1280, 720, 15, 1000),
DotEngine_VideoProfile_720P_2(51, 720, 1280, 15, 1000),
DotEngine_VideoProfile_720P_3(52, 1280, 720, 30, 1700),
DotEngine_VideoProfile_720P_4(53, 720, 1280, 30, 1700),
boolean startLocalMedia();
该方法初始化本地的音视频, 可以用来在加入房间之前进行视频的预览. 如果不调用此方法, joinRoom方法会自动初始化本地的音视频. 此方法会产生 onAddLocalView
onAddLocalAudioTrack
回调
void stopLocalMedia();
该方法结束本地的音视频, 需要在调用leaveRoom之后调用. 此方法会产生onRemoveLocalView
onRemoveLocalAudioTrack
回调
boolean joinRoom(final String dotToken);
加入一个房间, 房间和用户信息已经包含在token中, dotEngine的服务端会自动匹配. token每次从服务端获取.
为防止token泄露,最好不要重复使用token. 此方法会产生onJoined
回调
-(void)leaveRoom;
离开一个房间, 此方法并不会停止本地音视频, 如果要关闭本地视频预览, 在调用leaveRoom后调stopLocalMedia.
此方法会产生onLeave
回调.
void setCaptureMode(DotEngineCaptureMode captureMode);
此方法为高级api, 设置音视频的采集模式. 使用场景为自定义音视频输入.
DotEngineCaptureMode 有三种模式:
public enum 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(final boolean enable);
在房间里用户有可能需要在音视频的切换,此方法可以动态的开关视频. 调用此方法后, 状态会传播给房间内其他的用户. 此方法会产生onEnableVideo
回调
void enableAudio(final boolean enable);
静音模式和非静音模式的切换, 调用此方法后, 状态会传播给房间内其他的用户. 此方法会产生onEnableAudio
回调
void enableSpeakerphone(boolean enable);
public void sendCaptuerImageBuffer(ImageBuffer imageBuffer, int rotation);
当DotEngineCaptureMode 为DotEngine_Capture_Custom_Video
, DotEngine_Capture_Custom_Video_Audio
时,需要输入外部的视频源.
更多内容可以产看自定义音视频输入.
public void onInitPrepared();
public void onJoined(String user);
当有用户加入房间时的回调, 包括远程用户和本地用户.
public void onLeave(String user);
当有用户离开房间时的回调, 包括远程用户和本地用户.
public void onAddLocalView(SurfaceView view);
用户在调用startLocalMedia后, 会回调此方法.
如果view没有被添加到父视图中, 该视图中的视频不会被渲染. 如果用户想自定义本地视频的渲染可以忽略此方法.
public void onAddRemoteView(String userId, SurfaceView view);
当远程用户的视频准备好的时候会调用此方法.
如果view没有被添加父视图中,该视图中的视频不会被渲染. 如果用户想自定义远程视频的渲染可以忽略此方法.
public void onRemoveLocalView(SurfaceView view);
用户在调用stopLocalMedia后, 会回调此方法. dotEngine 不会做view的移出操作, 需要用户自己完成.
public void onRemoveRemoteView(String userId, SurfaceView view);
当远程用户的视频移出的时候会调用此方法.dotEngine 不会做view的移出操作, 需要用户自己完成.
public void onAddLocalAudioTrack();
用户在调用startLocalMedia后, 会回调此方法. 视频模式下可以不用处理.
public void onAddRemoteAudioTrack(String userId);
远程用户音频准备好的时候回调此方法. 视频模式下可以不用处理.
public void onRemoveLocalAudioTrack();
用户在调用stopLocalMedia后, 会调用此方法. 视频模式下可以不用处理.
public void onRemoveRemoteAudioTrack(String userId){};
远程用户的音频移出的时候会调用此方法. 视频模式下可以不用处理.
public void onEnableAudio(boolean enable, String user)
当房间有用户开启静音或者关闭静音是会产生此回调.
public void onEnableVideo(boolean enable, String user)
当房间内有用户关闭视频或者打开视频会产生此回调.
public void onOccurError(DotEngineErrorType errorCode);
当dotEngine发生错误会产生此回调
为了能更灵活更节省资源的对音视频回调进行控制, Audio/Video Frame Listener 被设计为了DotEngineListener
的子回调.
如果不设置不会占用额外的资源.
public interface LocalAudioFrameListener {
void onLocalAudioFrame(DotEngineAudioFrame frame);
}
public interface RemoteAudioFrameListener {
void onRemoteAudioFrame(String userId, DotEngineAudioFrame frame);
}
public interface LocalVideoFrameListener {
void onLocalVideoFrameListener(DotEngineVideoFrame frame);
}
public interface RemoteVideoFrameListener {
void onRemoteVideoFrame(String userId, DotEngineVideoFrame frame);
}
具体的用法为:
DotEngineListener dotEngineListener = new DotEngineListener() {
// some functions
};
dotEngineListener.localAudioFrameListener = new DotEngineListener.LocalAudioFrameListener() {
@Override
public void onLocalAudioFrame(DotEngineAudioFrame frame) {
}
};
// some other listener
public interface LocalAudioFrameListener {
void onLocalAudioFrame(DotEngineAudioFrame frame);
}
如果用户还需要对本地的音频做其他的处理, 可以实现这个回调.
更多的信息可以查看自定义音视频
public interface RemoteAudioFrameListener {
void onRemoteAudioFrame(String userId, DotEngineAudioFrame frame);
}
如果用户需要对远程用户的音频做其他的处理, 可以实现这个回调.
更多的信息可以查看自定义音视频
public interface LocalVideoFrameListener {
void onLocalVideoFrameListener(DotEngineVideoFrame frame);
}
如果用户需要对本地的视频做其他的处理, 可以实现这个回调.
更多的信息可以查看自定义音视频
public interface RemoteVideoFrameListener {
void onRemoteVideoFrame(String userId, DotEngineVideoFrame frame);
}
如果用户需要对远程的视频做其他的处理, 比如自定义渲染,可是实现这个回调.
更多的信息可以查看自定义音视频
- 介绍
- 客户端SDK
- 自定义音视频输入输出
- 服务端SDK
- 其他