API参考

优质
小牛编辑
114浏览
2023-12-01

目录

  1. 互动直播方法介绍 MRTCInteractiveClient

  2. 接口介绍 MRTCInteractiveClientRoomEvents

  3. 设置 MRTCSetting

  4. 编解码器 MRTCCodec

  5. 错误信息 MRTCException

互动直播方法介绍 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

错误码错误含义
1600Create new client error
1601Client Not exist
1602Stream already exist
1603Stream not exist
1604Stream server unavailable
1605Get Mrtc server error
1606Play failed
1607Set play answer failed
1608Create stream error
1609Remote create offer error
1610Set configuration error
1611Json error
1612Send message error
1613Close PeerConnection error
1614Set candidate error
1615Keepalive Timeout
1616Stream have been closed
2002URL wrong
2003Signaling json init error
2004Signaling json parse error
2005Ice connect failed
2013Socket connect faild
2014MRTC pusher socket disconnect
2015MRTC puller socket disconnect
2016MRTC interactive socket disconnect
2017Role out of bounds
2018Wrong video resolution format
3000Stop capture interrputed exception
3001Switch camera error
3002Audio record init error
3003Audio record start error
3004Audio record error
3005Audio track init error
3006Audio track start error
3007Auido track error
3008No available device
3009User revoked permission to capture the screen
3010Camera error
3011Camera disconnected
3012Camera freezed
3013Peerconnection factory is null
3014No remote video stream
3015URI init error
3017Wrong push scheme
3018Wrong push path format
3019Create sdp failed
3020Set sdp failed
3021Role error