本文介绍使用音视频终端SDK可能出现的异常情况、特殊情况及其处理办法。

SDK集成常见问题

编译时出现libc++shared.so(C++标准动态库)冲突问题

如果出现该问题,说明您的项目中有两个SDK共同依赖了C++标准动态库,请在您的主程序build.gradle中增加以下代码:
android {
    packagingOptions {
        pickFirst 'lib/*/libc++_shared.so'
    }
}

直播推流常见问题

当您收到AlivcLivePushErrorListener时

  • 当出现onSystemError系统级错误时,您需要退出直播。
  • 当出现onSDKError错误(SDK错误)时,有两种处理方式,选择其一即可:
    • 销毁当前直播并重新创建。
    • 调用restartPush或restartPushAsync重启AlivcLivePusher。
  • 您需要特别处理App没有麦克风权限和没有摄像头权限的回调,App没有麦克风权限错误码为ALIVC_PUSHER_ERROR_SDK_CAPTURE_CAMERA_OPEN_FAILED,App没有摄像头权限错误码为ALIVC_PUSHER_ERROR_SDK_CAPTURE_MIC_OPEN_FAILED。

当您收到AlivcLivePushNetworkListener时

  • 网速慢时,回调onNetworkPoor,当您收到此回调说明当前网络对于推流的支撑度不足,此时推流仍在继续、没有中断。网络恢复时,回调onNetworkRecovery,您可以在此处理自己的业务逻辑,比如UI提醒用户。
  • 网络出现相关错误时,回调onConnectFail、onReconnectError或onSendDataTimeout。有两种处理方式,您只需选择其一:销毁当前推流并重新创建,或调用reconnectAsync进行重连,建议您重连之前先进行网络检测和推流地址检测。
  • SDK内部每次自动重连或者开发者主动调用reconnectAsync重连接口的情况下,会回调onReconnectStart重连开始。每次重连都会对RTMP进行重连链接。

    RTMP链接建立成功之后会回调onReconnectSuccess,此时只是链接建立成功,并不意味着可以推流数据成功。如果链接成功之后,由于网络等原因导致推流数据发送失败,SDK会继续重连。

  • 推流地址鉴权即将过期会回调onPushURLAuthenticationOverdue。如果您的推流开启了推流鉴权功能(推流URL中带有auth_key),我们会对推流URL做出校验。在推流URL过期前约1min,您会收到此回调,实现该回调后,您需要回传一个新的推流URL,以此保证不会因为推流地址过期而导致推流中断。示例代码如下:
    String onPushURLAuthenticationOverdue(AlivcLivePusher pusher) {
        return "新的推流地址 rtmp://";
    }

当您收到AlivcLivePusherBGMListener背景音乐错误回调时

  • 背景音乐开启失败时会回调onOpenFailed,检查背景音乐开始播放接口所传入的音乐路径与该音乐文件是否正确,可调用startBGMAsync重新播放。
  • 背景音乐播放超时会回调onDownloadTimeout,多出现于播放网络URL的背景音乐,提示主播检查当前网络状态,可调用startBGMAsync重新播放。

当网络中断时

  • 短时间断网和网络切换:即短时间的网络波动或者网络切换。一般情况下,中途断网时长在AlivcLivePushConfig设置的重连超时时长和次数范围之内,SDK会进行自动重连,重连成功之后将继续推流。若您使用阿里云播放器,建议播放器收到超时通知之后短暂延时5s后再做重连操作。
  • 长时间断网:断网时长超出AlivcLivePushConfig设置的重连超时时长和次数范围时,SDK自动重连失败,此时会回调onReconnectError,在等到网络恢复之后调用reconnectAsync接口进行重连。同时播放器也要配合做重连操作。
    • 建议您在SDK外部做网络监测。
    • 主播端和播放端在客户端无法进行直接通信,需要配合服务端使用。比如主播端断网,服务端会收到CDN的推流中断回调,此时可以推送给播放端,主播推流中断,播放端再做出相应处理。恢复推流同理。
    • 阿里云播放器重连需要先停止播放再开始播放。调用接口顺序stop>prepareAndPlay。
      mPlayer.stop();
      mPlayer.prepareAndPlay(mUrl);

后台运行和锁屏

  • 当App退至后台或锁屏时,您可调用AlivcLivePusher的pause()resume()接口,暂停或恢复推流。
  • 对于非系统的音视频通话,SDK会采集声音并推送出去,您可以根据业务需求在退后台或锁屏时调用静音接口mAlivcLivePusher.setMute(true或false)来决定后台时是否采集音频。

码率设置

SDK内部有动态变化码率策略,您可以在AlivcLivePushConfig中修改码率预设值。根据产品需求对于视频分辨率、视频流畅度、视频清晰度的要求不同,对应设置的码率范围也不同,具体参考如下:
  • 视频清晰度:推流码率越高,则视频清晰度越高。所以推流分辨率越大,所需要设置的码率也就越大,以保证视频清晰度。
  • 视频流畅度:推流码率越高,所需要的网络带宽越大。所以在较差的网络环境下,设置较高的码率有可能影响视频流畅度。

短视频SDK常见问题

如何申请试用短视频SDK?

申请链接:短视频License申请,详细说明请参见获取License。所需信息如下:
  • 公司名称
  • 应用名称
  • 申请试用的SDK版本(基础、标准、专业)
  • 联系人
  • 联系电话
  • 应用bundleID
  • 包名和签名信息(MD5)
    • 要求:MD5格式、小写、无冒号。
    • 可使用签名获取工具来获取包名和签名信息,安装后按工具中的提示操作。
  • 阿里云账号或UID

    如没有阿里云账号,请提前注册。注册步骤请参见注册阿里云账号

重要
  • License免费试用期为一个月。
  • 请确保申请信息齐全、格式规范,后续若有需要更换包名、签名文件、BundleID任意一项,请重新申请。
  • 短视频专业版SDK的试用版支持高级美颜、智能抠图和手势识别等功能,这些功能由阿里云美颜特效SDK美颜特效SDK简介第三方SDK提供。

人脸贴纸与人脸AR、动态贴纸的区别?

人脸贴纸属于视频录制中的功能,即通过人脸识别的功能,给识别到的人脸添加指定的贴纸,目前仅专业版本支持。 人脸AR属于美颜特效SDK中的功能,需要额外授权。 动态贴纸属于视频编辑中的功能,仅专业版本支持。

美颜特效常见问题

什么是美颜特效SDK

美颜特效SDK是由阿里云自研的,用于各种视频拍摄场景下提供的包括美颜美型、滤镜、贴纸、美妆及手势识别智能抠图等多种实时特效功能,覆盖多种拍摄场景,满足用户多类拍摄需求。

美颜特效SDK是否支持第三方接入使用?

美颜特效SDK作为完全独立的SDK,可与市面上阿里直播SDK、腾讯云SDK、七牛直播SDK、声网SDK、Librestreaming等常见SDK进行组合使用。

组合使用诉求简单,只要任何第三方SDK支持返回纹理或画面数据Buffer给到应用侧自行处理,则均可接入到美颜特效SDK中。同时,为方便各种业务更快速便捷接入,美颜特效SDK已与阿里云的短视频SDK、直播推流SDK、互动直播SDK、RTC等常用SDK进行深度合作绑定可快速直接接入。操作指引,请参见快速接入

如何选择美颜特效SDK版本?

为便于客户贴近业务更小合集地来接入,美颜特效SDK按照常见业务使用场景,分为3个版本。
  • 专业pro版
  • 旗舰ultimate版
  • 全功能full版
功能点功能说明专业pro版旗舰ultimate版全功能full版
美颜智能美颜
美白
磨皮
锐化
美肤
祛眼袋
祛法令纹
白牙
亮眼
红润
美型智能美型
瘦脸
削脸
瘦下颌骨
瘦颧骨
大眼
眼睛高度
微笑
脸长
下巴宽窄
下巴长短
嘴型
嘴唇厚度
鼻翼
瘦鼻
眼角
眼距
人中
发际线
美妆智能美妆×
口红×
眼影×
腮红×
眼妆×
高光×
卧蚕×
眉毛×
滤镜风格滤镜√ 5款√ ALL
贴纸静态和动态贴纸√ 10款√ ALL
美体瘦身瘦身×
小头×
瘦腿×
长腿×
丰胸×
脖子×
手臂×
瘦腰×
美发美发×
绿蓝幕抠图绿蓝幕抠图××
实景抠像实景抠像××
手势识别手势识别××
AR隔空写字AR隔空写字××

如何申请不同版本的SDK?

根据自身业务需求,选定匹配的版本,申请可按照指定要求,发送信息到指定邮箱即可,我们会在工作日的48小时内进行开通授权及后续对接服务。操作指引,请参见License使用说明