API参考
优质
小牛编辑
128浏览
2023-12-01
目录
互动直播方法介绍 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 |