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

前提条件

请下载最新版本的推流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. 创建预览。
    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;