Skip to content

Latest commit

 

History

History
234 lines (186 loc) · 7.2 KB

how-to-upgrade-to-v2.md

File metadata and controls

234 lines (186 loc) · 7.2 KB

1.x.x -> 2.x.x 版本迁移文档

说明

  • 本次更新,全面升级连麦内核,可提供更好的连麦体验。

  • 注意: 1.x.x 版本与 2.x.x 版本不兼容,新老版本无法互相连麦,升级请详细阅读文档及更改说明

版本

  • 发布了 pldroid-rtc-streaming-2.0.0.jar
  • 更新了 libpldroid_rtc_streaming.so

更改说明

具体接口使用方式详见 docs 目录下的 PLDroidRTCStreaming 文档。

新增接口说明

  • 新增 RTCConferenceOptions 配置连麦横竖屏的接口
/**
 * 设置连麦画面的 orientation
 *
 * @param orientation the orientation
 */
public RTCConferenceOptions setVideoEncodingOrientation(VIDEO_ENCODING_ORIENTATION orientation)

变更接口说明

  • 变更初始化接口

在原有接口的基础上新增�首选连麦连接服务器的区域码的配置参数(必须),同时建议整个进程运行过程中只执行一次初始化和反初始化,初始化后不会在后台占用 CPU 资源。 接口更改具体如下:

/**
  * 初始化引擎
  * 该类的所有其他接口必须在本方法调用成功后才能使用
  *
  * @param context the context Android 的上下文句柄
  * @param serverRegionId 连麦服务器的区域,详细区域请参考 RTCServerRegion
  * @return 错误码,0 代表成功,其他数值为初始化失败
  */
public static int init(Context context, int serverRegionId);

/**
  * 初始化引擎
  * 该类的所有其他接口必须在本方法调用成功后才能使用
  *
  * @param context the context Android 的上下文句柄
  * @param serverRegionId 连麦服务器的区域
  * @param logPath 日志保存路径,默认为 null
  * @return 错误码,0 代表成功,其他数值为初始化失败
  */
public static int init(Context context, int serverRegionId, String logPath);

区域配置参数详见官方文档

  • 变更连麦数据统计回调的接口

原有的方式已弃用,不再通过 setStreamStatsEnabled(true) 的方式开启回调并手动获取,而是通过新增 RTCConferenceOptions 配置如下接口来配置统计时间间隔,并根据时间间隔触发回调

/**
 * 开启数据统计功能,每隔 interval ms 会回调一次数据,数据为该时间段内的统计结果
 *
 * @param interval 统计时间间隔(单位:毫秒)默认为0,为0时不统计
 */
public RTCConferenceOptions setStreamStatsInterval(int interval)

/**
 * 注册数据统计的监听回调,该接口适用于 RTCMediaStreamingManager 和 RTCConferenceManager
 */
public final void setRTCStreamStatsCallback(RTCStreamStatsCallback callback);

开启数据统计回调后,回调信息如下:

public interface RTCStreamStatsCallback {
    // 音频码率
    int RTC_STATS_AUDIO_BITRATE = 1;
    // 视频码率
    int RTC_STATS_VIDEO_BITRATE = 2;
    // 视频帧率
    int RTC_STATS_VIDEO_FPS = 3;
    // 音频丢包率,千分比
    int RTC_STATS_AUDIO_PACKET_LOSS_RATE = 4;
    // 视频丢包率,千分比
    int RTC_STATS_VIDEO_PACKET_LOSS_RATE = 5;

    void onStreamStatsChanged(String userId, int statsType, int value);
}
  • 变更连麦音量信息统计的回调接口
public interface RTCAudioLevelCallback {
    /**
     * 开启音量回调后触发.
     *
     * @param userId userId
     * @param level 音量级别
     */
    void onAudioLevelChanged(String userId, int level);
}
  • 变更主播端自定义连麦窗口合流位置的接口
/**
 * 设置自定义窗口的合流位置
 *
 * @param x 窗口的 x 坐标
 * @param y 窗口的 y 坐标
 * @param width 窗口宽度
 * @param height 窗口高度
 */
public void setLocalWindowPosition(int x, int y, int width, int height);
  • 变更连麦小窗口的显示控件

连麦小窗口的显示控件从老版本的 GLSurfaceView 变更为 RTCSurfaceView

<FrameLayout
      android:id="@+id/RemoteWindowA"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:visibility="invisible"
      android:clickable="true"
      android:onClick="onClickRemoteWindowA" >
      <com.qiniu.pili.droid.rtcstreaming.RTCSurfaceView
            android:id="@+id/RemoteGLSurfaceViewA"
            android:layout_width="120dp"
            android:layout_height="160dp"
            android:visibility="invisible"/>
</FrameLayout>
  • 变更 mute 的逻辑

mute 逻辑变更为使用枚举类型来实现,具体使用如下:

/**
 * 静音
 *
 * @param audioSource 静音的目标设备(麦克风、扬声器、合流数据)
 */
public void mute(RTCAudioSource audioSource);

/**
 * 取消静音
 *
 * @param audioSource 取消静音的目标设备(麦克风、扬声器、合流数据)
 */
public void unMute(RTCAudioSource audioSource);

RTCAudioSource 的具体内容如下:

public enum RTCAudioSource {
    // 麦克风
    MIC,
    // 扬声器
    SPEAKER,
    // 合流数据
    MIXAUDIO
}
  • 变更连麦重连机制

去除 RTCConferenceOptions 中对重连超时时间和重连次数的配置,连麦断线后,SDK 内部会自动重连,断线和重连的状态消息会通过 RTCConferenceStateChangedListener 进行回调,RECONNECTING 表示与服务器断线了,正在重连;RECONNECTED 表示与服务器连接成功;目前的机制是重连中没有主动调用 LeaveRoom 的话,会重试最多500次

删除接口说明

  • 删除 RTCConferenceOptions 中配置重连超时时间的接口
public RTCConferenceOptions setConnectTimeout(int milliseconds)
  • 删除 RTCConferenceOptions 中配置重连次数的接口
public RTCConferenceOptions setReconnectTimes(int reconnectTimes)

更新注意事项

  • 初始化和反初始化建议在整个 app 开始运行和最终销毁时调用,调用一次即可,初始化后不会在后台占用 CPU 资源

  • 注意: 通过 setPreferredVideoEncodingSize 方法设置推流尺寸的时候,要根据推流的尺寸进行相应的配置。比如:横屏推流,则传入(width, height);竖屏推流,则需传入(height, width)。

  • 变更了错误码,新的错误码定义如下:

错误码 描述
0 SUCCESS
-2 ERROR_INVALID_ALG
-3 ERROR_ALREADY_INITIALIZED
-4 ERROR_NOT_INITIALIZED
-7 ERROR_WRONG_STATE
-11 ERROR_ROOM_TOKEN
-100 ERROR_OUT_OF_MEMORY
-101 ERROR_ENGINE_START_FAILED
-102 ERROR_ENGINE_STOP_FAILED
-103 ERROR_ILLEGAL_SDK
-104 ERROR_SERVER_INVALID
-105 ERROR_NETWORK_ERROR
-106 ERROR_SERVER_INNER_ERROR
-1000 ERROR_UNEXPECTED
2001 ERROR_UNKNOWN
2002 ERROR_NOT_JOIN_ROOM
2003 ERROR_CAMERA_NOT_READY
2004 ERROR_AUTH_DNSLOOKUP_FAILED
2005 ERROR_AUTH_CONNECT_FAILED
2006 ERROR_AUTH_HTTP_BAD_REQUEST
2007 ERROR_AUTH_HTTP_UNAUTHORIZED
2008 ERROR_AUTH_HTTP_NOT_FOUND
2009 ERROR_MALFORMEDURL_EXCEPTION
2010 ERROR_JSON_EXCEPTION
2011 ERROR_IO_EXCEPTION
2012 ERROR_SERVER_TIMEOUT