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

前提条件

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

新版推流SDK,请参见产品介绍

切换步骤

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

  1. 在工程libs目录下:用V4.1.0及以上版本中需要加入AlivcLivePusher.frameworkAlivcLibRtmp.framework替换V4.0.2项目中的AliLivesdk.framework
  2. 播放器相关SDK需要升级到AliyunPlayer,请参考SDK及Demo中使用的SDK。
  3. 如果接入Queen智能美化特效,请在Demo中查看使用方式,方便美颜SDK及UI的接入。
  4. 相关API会有部分调整,请根据核心接口对比排查并更新当前代码中的API。
  5. 推流主流程接口有部分变更,请根据推流主流程接口变更修改当前代码。

核心接口对比

  • 基础接口
    V4.0.2 V4.1.0及以上版本 描述
    getSdkVersion getSdkVersion 获取版本号。
    initWithConfig initWithConfig 创建推流实例。
    destorySdk destroy 销毁推流。
    • setStatusDelegate
    • setRtsDelegate
    • setVidePreProcessDelegate
    • setDataStatsDelegate
    • AlivcPublisherViewDelegate
    • AlivcLivePusherInfoDelegate
    • AlivcLivePusherErrorDelegate
    RTC推流模式下订阅某个粉丝媒体相关回调,详情请参见AliLiveRtsDelegate设置视频前处理回调。设置直播媒体参数回调。
    setNetworkDelegate AlivcLivePusherNetworkDelegate 设置推流网络状态相关回调。
    setLogDirPath 无:自定义Log写入 设置SDK日志文件保存路径。如需调用,请在调用所有API之前先调用此接口,避免日志出现丢失,同时保证指定的目录已存在且可写入。
    setLogLevel 设置日志输出级别。
  • 推流基础接口
    V4.0.2 V4.1.0及以上版本 描述
    startPreview startPreview 开始预览(主播端接口)。
    stopPreview stopPreview 停止预览(主播端接口)。
    pausePush pause 暂停摄像头采集并进入垫片推流状态(仅支持RTMP模式推流)。需要先调用startPush后才可以调用pausePush,否则调用顺序会出错。
    resumePush resume() 恢复摄像头采集并结束垫片推流状态(仅支持RTMP模式推流)。需要先调用pausePush后才可以调用resumePush,否则调用顺序会出错。
    startPush startPushWithURL 开始推流。
    stopPush stopPush 停止推流。
    isPublishing isPushing 查询是否正在推流。
    getPublishUrl getPushURL 获取当前推流的地址。
  • 视频相关接口
    V4.0.2 V4.1.0及以上版本 描述
    setPreviewMode setpreviewDisplayMode 设置预览模式。
    switchCamera switchCamera 切换前后摄像头。
    setCameraZoom setZoom 设置摄像头缩放及是否允许闪光灯。
    isCameraExposurePointSupported setExposure 摄像头是否支持设置曝光区域。
    setCameraFocusPoint setAutoFocus 设置摄像头聚焦。
  • 音频相关接口
    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相关配置对象
    头文件引用。#import <AliLiveSdk/AliLiveSdk.h>
    创建AliLiveEngine。AliLiveConfig *config = [[AliLiveConfig alloc] init];
    config.videoProfile = AliLiveVideoProfile_540P;
    config.videoFPS = 20;
    myConfig.pauseImage = [UIImage imageNamed:@"background_img.png"];
    myConfig.accountID = @"";
    AliLiveEngine *engine = [[AliLiveEngine alloc] initWithConfig:myConfig];
    [engine setAudioSessionOperationRestriction:AliLiveAudioSessionOperationRestrictionDeactivateSession];
    [engine setRtsDelegate:self];
    [engine setStatusDelegate:self];

    在需要使用推流器的ViewController中引用头文件#import <AlivcLivePusher/AlivcLivePusherHeader.h>,示例代码如下:

    //初始化推流配置类,也可使用initWithResolution来初始化
    AlivcLivePushConfig *config = [[AlivcLivePushConfig alloc] init];
    //默认为540P,最大支持720P
    config.resolution = AlivcLivePushResolution540P;
    //建议用户使用20fps
    config.fps = AlivcLivePushFPS20;
    // 打开码率自适应,默认为true
    config.enableAutoBitrate = true;
    //默认值为2,关键帧间隔越大,延时越高。建议设置为1-2
    config.videoEncodeGop = AlivcLivePushVideoEncodeGOP_2;
    // 单位为毫秒,重连时长2s,重连间隔设置不小于1秒,建议使用默认值即可
    config.connectRetryInterval = 2000;
    // 默认为false,正常情况下都选择false即可
    config.previewMirror = false;
    // 默认为竖屏,可设置home键向左或向右横屏
    config.orientation =  AlivcLivePushOrientationPortrait;
  2. 创建预览。
    V4.0.2 V4.1.0及以上版本
    开始预览。[self.engine startPreview:self.renderView];
    推流预览显示支持以下三种模式:
    • ALIVC_LIVE_PUSHER_PREVIEW_SCALE_FILL:铺满窗口,视频比例和窗口比例不一致时预览会有变形。
    • ALIVC_LIVE_PUSHER_PREVIEW_ASPECT_FIT:保持视频比例,视频比例和窗口比例不一致时有黑边(默认)。
    • ALIVC_LIVE_PUSHER_PREVIEW_ASPECT_FILL:剪切视频以适配窗口比例,视频比例和窗口比例不一致时会裁剪视频。

    这三种模式可以在AlivcLivePushConfig中设置,也可以在预览中和推流中通过API setpreviewDisplayMode 进行动态设置。

    [self.livePusher startPreview:self.view];
  3. 开始推流。
    V4.0.2 V4.1.0及以上版本
    [self.engine startPushWithURL:self.pushUrl];
    [self.livePusher startPushWithURL:@"推流测试地址(rtmp://......)"];
  4. 停止推流。
    V4.0.2 V4.1.0及以上版本
    [self.engine stopPush];
    [self.engine stopPreview];
    [self.engine destorySdk];
    self.engine = nil;
    [self.livePusher destory];
    self.livePusher = nil;
    /*获取推流状态。*/
    AlivcLivePushStatus status = [self.livePusher getLiveStatus];