SDK集成

下载并解压最新的 SDK

下载OneSDK:OneSDK-Android v1.1.1

MD5:a9a916003c7ad8dd5d2485c268f21380

最近更新:2018-04-25

开发与运行环境

  • 开发环境:Android Studio
  • 运行环境:支持 Android 4.3 及以上系统版本;支持 armv7/armv7a/arm64/x86 架构的so库;可在所有架构的真机上运行。

组件及资源介绍

解压后,文件目录如下:

.
├── BaiduCloud-OneSDK-Android-<Version>
│   ├── demo
│   ├── OneSDKSession_sourcecode
│   ├── jniLibs
│   │   ├── arm64-v8a
│   │   ├── armeabi
│   │   ├── armeabi-v7a
│   │   └── x86
│   └── libs

其中:

demo为demo示例;
OneSDKSession_sourcecode为开源Session相关代码, 需要复制到您的工程中;
libs目录下为各模块的jar包;
jniLibs目录下为so文件;

  • demo 目录

    demo目录存放着采集端 SDK 的示例工程,展示了如何使用采集端 SDK 结合百度智能云播放器和 VOD 上传等 SDK 实现 Android 实时推流,录屏直播推流,短视频采编播上传,答题直播等业务场景。

  • OneSDKSession_sourcecode 目录

    该目录为开源的 Session 等相关代码的目录,该目录下的各种 Session 类对应者各种业务场景。

  • jniLibs 目录

    存放着适配了四种指令集的底层动态链接库,该目录下每个文件夹存储的动态链接库文件名称虽然相同,但适配的指令集不同,用户在使用时需注意不可将不同指令集的文件混用或错用,否则会造成应用闪退。\
    具体动态链接库文件的含义如下表所示:

    文件名 含义
    libbdsoundutils.so 音频处理动态链接库,用于进行音轨的重采样等处理
    libFaceSDK.so 人脸检测动态链接库,处理人脸特征点实时追踪
    libgesture_utils.so 人体动作检测动态链接库,用于处理各种人体检测
    libidl_face_license.so 人脸检测授权动态链接库,处理人脸检测库授权逻辑
    libidl_token.so 人脸检测临时授权动态链接库,处理人脸检测库临时授权逻辑
    librtmp_jni.so librtmp 动态链接库,处理 RTMP 协议交互
    libstlport_shared.so NDK STL 动态链接库
  • libs 目录

    存放采集端 SDK 的 Java 依赖包:

    文件名 含义
    bdplayer.jar 百度智能云播放器 2.2.1 版本直播精简版(可选)
    bdrtmp.jar 双向rtmp协议栈(可选)
    capture.jar 采集端核心库
    facesdk.jar 人脸检测 SDK(可选)
    idl-license.jar 人脸检测 SDK 证书(可选)
    stylefilter.jar 风格滤镜库(可选)
    vod_upload_with_bos.jar vod上传SDK(可选)

配置工程

将jar包和so库加入到工程中

  1. 配置jar包

    capture.jar, vod_upload_with_bos.jar等文件复制到您工程的app/libs目录下,并在app模块的gradle文件中注明jar包所在路径,如下所示

    dependencies {
        compile fileTree(include: [‘*.jar’], dir: ‘libs’)
    }
    
  2. 配置so库

    armeabi-v7a arm64-v8a等so库文件夹复制到 app/src/main/jniLibs目录下

  3. 配置Session相关类

    SDK进行采集端制作时,需要使用Session相关类,这部分代码需要您将解压包OneSDKSession_sourcecode目录的文件夹和类 复制到您工程app/src/main/java中。

  4. 配置完成

    配置完成后,目录如下所示

    ├── demo
    │   ├── app
    │   │   ├── libs
    │   │   │   ├── capture.jar
    │   │   │   ├── stylefilter.jar
    │   │   │   └── vod_upload_with_bos.jar
    │   │   ├── src
    │   │   │   ├── main
    │   │   │   │   ├── java
    │   │   │   │   │   └── com.baidu.cloud.mediastream
    │   │   │   │   ├── jniLibs
    │   │   │   │   │   ├── armeabi-v7a // so库文件位置
    │   │   │   │   │   └── arm64-v8a
    

特别注意:

  • 如果您也使用了其他的so库,请务必保证各个CPU架构下的so文件数完全相等。如armeabi-v7aarm64-v8a(若有)文件夹下的so文件数量完全相等。因为手机在安装Apk时,安装器仅会将相应CPU架构的文件夹内容复制到/data/data/com.your.package/lib目录下,若手机主CPU架构文件夹没有,则复制副CPU架构(多数手机副CPU架构为armeabi-v7a,模拟器一般无副CPU架构)的文件夹内容。百度采集端OneSDK提供了arm平台两个so库的支持,如果您也使用了其他家SDK,请取所有家SDK的so库架构的交集。

  • app/src/main/jniLibs目录为Android Studio默认的so打包路径。如果您习惯将so文件放到app/libs目录下,需要额外配置gradle文件下的jniLibs.srcDirs = ['libs']

声明SDK需要的权限

将下列权限加入到您的AndroidManifest.xml中:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
// 用于显示录屏直播时的悬浮控制组件所需的权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

防混淆设置

将以下语句加入到您的proguard混淆配置文件中

-keep class com.baidu.cloud.**{ *;}

设置AK

申请AK

申请号并开通权限,您需要账登录百度智能云,在安全认证页面 获取 Access Key (AK)。SDK 认证时须传入 AK 参数。

设置AK

用户在使用SDK之前需要获取百度智能云Access Key,该Key与你的百度智能云账号相关联。
调用OneSDK AuthManager 类的静态方法setAK来设置ak:

AuthManager.setAK(ak);