目录
互动直播方法介绍 MRTCInteractiveClient
/*
/*
作用:初始化互动直播类
host:主机地址
appContext:application context
renderer:本地推流渲染的SurfaceViewRenderer实例
setting:本地推流配置
*/
public MRTCInteractiveClient(String host, Context appContext, SurfaceViewRenderer renderer, MRTCSetting setting)
/*
作用:加入互动直播房间
channel:频道id
role:加入房间作为的角色,主持人为main,嘉宾为1、2、3...等数字编号
password:房间密码,主持人和嘉宾的密码不同
delegate:MRTCInteractiveClientRoomDelegate,会有加入房间后嘉宾加入,嘉宾离开,错误等回调
*/
public void join(String channel, String role, String password, MRTCInteractiveClientRoomEvents roomEvents)
/*
作用:离开房间,销毁资源
*/
public void leave()
/*
作用:播放指定角色的流
appContext:application context
role:角色名,例如:main、1、2、3等
renderer:用于渲染该角色流的SurfaceViewRenderer实例
*/
public void playClient(Context appContext, String role, SurfaceViewRenderer renderer)
/*
作用:停止播放指定角色的流
role:角色名,例如:main、1、2、3等
*/
public void stopClient(String role)
/*
作用:开关本地视频推流,关闭后房间其他人将看不到您的画面
enable: YES:开 NO:关
*/
public void enableLocalAudio(boolean enable)
/*
作用:开关本地音频推流,关闭后房间其他人将看不到您的声音
作用:开关本地音频推流,
enable: YES:开 NO:关
*/
public void enableLocalVideo(boolean enable)
/*
作用:开关远端音频推流,关闭后房间其他人的声音将听不到
作用:开关本地音频推流,
enable: YES:开 NO:关
*/
public void enableRemoteAudio(boolean enable)
/*
作用:切换本地摄像头
*/
public void switchCamera()
/*
作用获取本地推流实时信息
视频编码器 key:videoCodec
视频实时码率 key:videoBitrate
视频实时丢包率 key:videoPacketsLostRate
音频编码器 key:audioCodec
音频实时码率 key:audioBitrate
音频实时丢包率 key:audioPacketsLostRate
*/
public void getStats(MRTCInteractiveStatsEvents statsEvents)
接口介绍 MRTCInteractiveClientRoomEvents
public interface MRTCInteractiveClientRoomEvents{
    /*
    当互动直播实例的状态被改变时会被触发
    state:新状态
    */
    void stateChanged(MRTCInteractiveClientState state);
    /*当调用加入房间接口之后,如果加入房间成功就会回调此方法
    roleList:已经在房间中的其他角色,您可以在回调中遍历此List调用播放指定角色接口
    */
    void joinSuccess(List<String> roleList);
    /*
    当调用加入房间接口之后,如果加入房间失败就会回调此方法
    exception:错误信息
    */
    void joinFailed(MRTCException exception);
    /*
    加入房间成功后,如果有新的角色加入房间将会回调此方法
    roleList:新加入的角色数组,您可以在回调中遍历此List调用播放指定角色接口
    */
    void onJoinRoles(List<String> roleList);
    /*
    加入房间成功后,如果有角色离开房间将会回调此方法
    roleList:离开的角色数组,您可以在回调用遍历此数组移除对应的图渲染视
    */
    void onLeaveRoles(List<String> roleList);
    /*
    加入房间成功后,播放其他角色成功后将回调此方法
    role:播放的角色
    */
    void playSuccess(String role);
    /*
    加入房间成功后,播放其他角色失败时将回调此方法
    role:播放的角色
    e:错误信息
    */
    void playFailed(String role,MRTCException e);
    /*
    加入房间成功后的错误回调
    exception:错误信息
    */
    void onError(MRTCException exception);
}
设置 MRTCSetting
您可以使用MRTCSetting配置推流参数,每一个参数都有默认值,也可以从MRTCSetting中获取机器支持的配置。
基本配置
MRTCSetting setting = null; try{ setting = MRTCSetting.builder().createSetting(); }catch (MRTCException e){ } /*默认配置 编解码器:机器支持的编解码器的第一个 视频宽高:1280x720 最大码率:2000kbps 帧率:25 摄像头:前置 硬件加速:开启 屏幕捕捉:关闭 */自定义配置
获取支持的编解码器
MRTCVideoCodec[] codecs = MRTCSetting.getSupportVideoCodec();获取支持的分辨率(注:分辨率格式为: 宽x高)
String[] resolutions = MRTCSetting.getSupportResolutions();获取支持的fps
MRTCSetting.MRTCFpsRange fpsRange = MRTCSetting.getSupportFps();构造自定义配置
MRTCSetting setting = null; /*捕捉摄像头配置*/ MRTCVideoCodec codec = new MRTCVideoCodec("H264"); try{ setting = MRTCSetting.builder().setVideoCodec(codec) .setResolution("960x540")//分辨率 .setMaxBitrate(1500)//最大码率 .setFps(30)//帧率 .setHardwareAccleration(false)//硬件加速 .setFront(false)//后置摄像头 .createSetting();//创建配置 }catch (MRTCException e){ } /*捕捉屏幕配置*/ MRTCVideoCodec codec = new MRTCVideoCodec("H264"); try{ setting = MRTCSetting.builder().setVideoCodec(codec) .setResolution("960x540")//分辨率 .setMaxBitrate(1500)//最大码率 .setFps(30)//帧率 .setHardwareAccleration(false)//硬件加速 .setUseScreenCapture(true)//开启屏幕捕捉 .setMediaProjection(mediaCode,mediaData)//设置数据源 .createSetting();//创建配置 }catch (MRTCException e){ }设置为自定配置时,您需要自己定义偏好编解码器、视频分辨率、最大码率、帧率、前后摄像头。
自定义配置建议参数:
|分辨率|帧率|码率| |:---:|:---:|:---:| |360p|25|350| |480p|25|600| |540p|25|1000| |720p|25|1500| |360p|30|400| |480p|30|750| |540p|30|1200| |720p|30|1800| 注:码率估算公式:(0.0000782*视频宽*视频高*帧率)
编解码器 MRTCCodec
构造方法
MRTCVideoCodec codec = new MRTCVideoCodec("H264"); MRTCVideoCodec codec = new MRTCVideoCodec("VP8"); MRTCVideoCodec codec = new MRTCVideoCodec("VP9"); /*暂时只支持H264,VP8,VP9三种*/
错误信息 MRTCException
| 错误码 | 错误含义 | 
|---|---|
| 1600 | Create new client error | 
| 1601 | Client Not exist | 
| 1602 | Stream already exist | 
| 1603 | Stream not exist | 
| 1604 | Stream server unavailable | 
| 1605 | Get Mrtc server error | 
| 1606 | Play failed | 
| 1607 | Set play answer failed | 
| 1608 | Create stream error | 
| 1609 | Remote create offer error | 
| 1610 | Set configuration error | 
| 1611 | Json error | 
| 1612 | Send message error | 
| 1613 | Close PeerConnection error | 
| 1614 | Set candidate error | 
| 1615 | Keepalive Timeout | 
| 1616 | Stream have been closed | 
| 2002 | URL wrong | 
| 2003 | Signaling json init error | 
| 2004 | Signaling json parse error | 
| 2005 | Ice connect failed | 
| 2013 | Socket connect faild | 
| 2014 | MRTC pusher socket disconnect | 
| 2015 | MRTC puller socket disconnect | 
| 2016 | MRTC interactive socket disconnect | 
| 2017 | Role out of bounds | 
| 2018 | Wrong video resolution format | 
| 3000 | Stop capture interrputed exception | 
| 3001 | Switch camera error | 
| 3002 | Audio record init error | 
| 3003 | Audio record start error | 
| 3004 | Audio record error | 
| 3005 | Audio track init error | 
| 3006 | Audio track start error | 
| 3007 | Auido track error | 
| 3008 | No available device | 
| 3009 | User revoked permission to capture the screen | 
| 3010 | Camera error | 
| 3011 | Camera disconnected | 
| 3012 | Camera freezed | 
| 3013 | Peerconnection factory is null | 
| 3014 | No remote video stream | 
| 3015 | URI init error | 
| 3017 | Wrong push scheme | 
| 3018 | Wrong push path format | 
| 3019 | Create sdp failed | 
| 3020 | Set sdp failed | 
| 3021 | Role error |