SDK升级说明

如果您现在使用的是V4.0.2版本的Android直播推流SDK,想要升级到V4.1.0及以上版本时,可参考本文步骤进行升级。

前提条件

请下载最新版本的直播推流SDK。

新版直播推流SDK,请参见SDK下载

升级步骤

从项目中移除SDK V4.0.2相关类库和资源文件,添加V4.1.0及以上版本相关类库和资源文件,排查并更新相关API和推流主流程接口。

  1. 在工程libs目录下:用V4.1.0及以上版本项目中的AlivcLivePusher.aar替换V4.0.2项目中的AliLiveSdk.aar。

  2. 在build.gradle项目文件下,将播放器SDK升级到最新版本。

    说明

    播放器SDK发布记录,请参见Android播放器SDK

    以2021年8月发布的播放器版本为例,修改播放器相关配置如下:

    implementation 'com.aliyun.sdk.android:AliyunPlayer:5.4.2.0-full'
    implementation 'com.aliyun.sdk.android:AlivcArtc:5.4.2.0'
  3. 如果接入Queen智能美化特效,可以工程增加Demo中的beauty、beautyui、imageutil、queenbeauty model,方便美颜SDK及UI的接入。

  4. 相关API会有部分调整,请根据下文核心接口对比排查并更新当前代码中的API。

  5. 推流主流程接口有部分变更,请根据下文推流主流程接口变更修改当前代码。

核心接口对比

  • 基础接口

    V4.0.2

    V4.1.0及以上版本

    描述

    getSdkVersion

    getSdkVersion

    获取版本号。

    create

    init

    创建推流实例。

    destroy

    destroy

    销毁推流。

    setStatusCallback

    setLivePushInfoListener

    设置推流状态相关回调。

    setNetworkCallback

    setLivePushNetworkListener

    设置推流网络状态相关回调。

    setLogDirPath

    setLogDirPath

    设置SDK日志文件保存路径。

    如需调用,请在调用所有API之前先调用此接口,避免日志出现丢失,同时保证指定的目录已存在且可写入。

    setLogLevel

    setLogLevel

    设置日志输出级别。

  • 推流基础接口

    V4.0.2

    V4.1.0及以上版本

    描述

    startPreview

    startPreview

    开始预览(主播端接口)。

    stopPreview

    stopPreview

    停止预览(主播端接口)。

    pausePush

    pause

    暂停摄像头采集并进入垫片推流状态(仅支持RTMP模式推流)。需要先调用startPush后才可以调用pausePush,否则调用顺序会出错。

    resumePush

    resume()

    恢复摄像头采集并结束垫片推流状态(仅支持RTMP模式推流)。需要先调用pausePush后才可以调用resumePush,否则调用顺序会出错。

    startPush

    startPush

    开始推流。

    stopPush

    stopPush

    停止推流。

    isPublishing

    isPublishing

    查询是否正在推流。

    getPublishUrl

    getPushUrl

    获取当前推流的地址。

  • 视频相关接口

    V4.0.2

    V4.1.0及以上版本

    描述

    setPreviewMode

    setPreviewMode

    设置预览模式。

    isAudioOnly

    isAudioOnly

    查询是否纯音频推流。

    switchCamera

    switchCamera

    切换前后摄像头。

    setCameraZoom

    setCameraZoom

    设置摄像头缩放及是否允许闪光灯。

    isCameraExposurePointSupported

    setExposureCompensation

    摄像头是否支持设置曝光区域。

    setCameraFocusPoint

    setLiveCameraFocus

    设置摄像头聚焦。

  • 音频相关接口

    V4.0.2

    V4.1.0及以上版本

    描述

    setMute

    setMute

    设置本地音频采集是否为静音帧。

    isAudioOnly

    isAudioOnly

    查询是否纯音频推流。

    enableEarBack

    setBGMEarsBack

    启用耳返。建议在插入耳机后开启耳返,否则可能会引入回声。

    playBGM

    startBGMAsync

    播放背景音乐。

    stopBGM

    stopBGM

    停止播放背景音乐。

    pauseBGM

    pauseBGM

    暂停播放背景音乐。

    resumeBGM

    resumeBGM

    恢复播放背景音乐。

    setBGMVolume

    setBGMVolume

    设置背景音乐音量。

推流主流程接口变更

  1. 创建Engine。

    创建AliLiveEngine(V4.0.2)

    V4.1.0及以上版本改为:创建AlivcLivePusher

    //创建RTMP相关配置对象
    AliLiveRTMPConfig rtmpConfig = new AliLiveRTMPConfig();
    //初始化码率配置
    rtmpConfig.videoInitBitrate = 1000;
    rtmpConfig.videoTargetBitrate = 1500;
    rtmpConfig.videoMinBitrate = 600;
    //创建直播推流配置
    AliLiveConfig mAliLiveConfig = new AliLiveConfig(rtmpConfig);
    //初始化分辨率、帧率、是否开启高清预览、暂停后默认显示图片
    mAliLiveConfig.videoFPS = 20;
    mAliLiveConfig.videoPushProfile = AliLiveConstants.AliLiveVideoPushProfile.AliLiveVideoProfile_540P;
    mAliLiveConfig.enableHighDefPreview = false;
    mAliLiveConfig.pauseImage = bitmap;
    mAliLiveConfig.accountId = "";
    AliLiveEngine mAliLiveEngine = AliLiveEngine.create(PushActivity.this, mAliLiveConfig);
    //初始化推流配置类
    AlivcLivePushConfig mAlivcLivePushConfig = new AlivcLivePushConfig();
    //初始化分辨率,分辨率540P,最大支持720P
    mAlivcLivePushConfig.setResolution(AlivcResolutionEnum.RESOLUTION_540P);
    //初始化帧率,建议用户使用20fps
    mAlivcLivePushConfig.setFps(AlivcFpsEnum.FPS_20); 
    //打开码率自适应,默认为true
    mAlivcLivePushConfig.setEnableBitrateControl(true); 
    //默认为竖屏,可设置home键向左或向右横屏。
    mAlivcLivePushConfig.setPreviewOrientation(AlivcPreviewOrientationEnum.ORIENTATION_PORTRAIT); 
    //设置音频编码模式
    mAlivcLivePushConfig.setAudioProfile(AlivcAudioAACProfileEnum.AlivcAudioAACProfileEnum.AAC_LC);
    AlivcLivePusher mAlivcLivePusher = new AlivcLivePusher();mAlivcLivePusher.init(mContext, mAlivcLivePushConfig);
  2. 创建预览。

    重要

    开启预览和停止预览接口需要成对调用,示例:startPreviewstopPreviewstartPreviewAysncstopPreviewAysnc

    V4.0.2

    V4.1.0及以上版本

    //创建预览显示窗口
    AliLiveRenderView mAliLiveRenderView = mAliLiveEngine.createRenderView(false);
    //添加预览显示窗口到布局中
    addSubView(mAliLiveRenderView);
    //设置预览显示模式
    mAliLiveEngine.setPreviewMode(AliLiveRenderModeAuto, AliLiveRenderMirrorModeOnlyFront);
    //开启预览
    mAliLiveEngine.startPreview(mAliLiveRenderView);

    livePusher对象初始化完成之后,可以进行开始预览操作。预览时需要传入摄像头预览的显示SurfaceView,示例代码如下:

    //开启预览,也可根据需求调用异步接口startPreviewAysnc来实现
    mAlivcLivePusher.startPreview(mSurfaceView)
  3. 开始推流。

    V4.0.2

    V4.1.0及以上版本

    mAliLiveEngine.startPush(mPushUrl);
    mAlivcLivePusher.startPush(mPushUrl);
  4. 停止推流。

    V4.0.2

    V4.1.0及以上版本

    //停止预览
    mAliLiveEngine.stopPreview();
    //停止推流
    mAliLiveEngine.stopPush();
    //销毁liveEngine
    mAliLiveEngine.destroy();
    mAliLiveEngine = null;
    //停止预览
    mAliLivePusher.stopPreview();
    //停止推流
    mAliLivePusher.stopPush();
    //销毁AliLivePushe
    mAliLivePusher.destroy();
    mAliLivePusher = null;