直播云

  • Android 连麦 V1 版本迁移 V2 版本说明

    最近更新时间:2018-04-19 17:38:05

    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
    以上内容是否对您有帮助?
  • Icon free helper
    Close