数据流录制
  • iOS
  • Android : Java
  • Web
  • 产品简介
    • 概述
    • 发布日志
  • 下载
    • SDK 下载
    • 体验 App
  • 快速开始
    • 跑通示例源码
    • 录制实现流程
    • 回放 SDK 集成
    • 回放实现流程
  • 基础功能
  • 常见错误码
  • 服务端 API v2
  • 客户端 API
  • 常见问题

回放 SDK 集成

更新时间:2022-01-18 10:51

1 集成依赖关系

数据流录制服务的 SDK 需要与其他 SDK 搭配使用,接入数据流录制服务,实现回放功能。

/Pics/ZegoRecorderPlayback/SDK_Integration.png

  • Express-Video SDK(含白板功能):ZegoWhiteboardView SDK 需要依靠于 Express-Video SDK(含白板功能)的房间广播信令通道以实现互动协同功能。
  • ZegoWhiteboardView SDK:如果需要实现互动白板功能,ZEGO 提供了 ZegoWhiteboardView SDK,提供给用户多人白板互动协同的功能。
  • ZegoDocsView SDK:如果需要实现文件共享功能,ZEGO 提供了 ZegoDocsView SDK。能与 ZegoWhiteboardView SDK 高度融合集成使用,两者搭配使用,可以做到快接入、易使用。
  • ZegoRecorderPlayback SDK:提供回放数据源的 SDK,需要搭配以上 SDK 才能使用。

2 准备环境

在开始集成以上 SDK 前,请确保开发环境满足以下要求:

  • Android Studio 2.1 或以上版本。
  • Android SDK 25、Android SDK Build-Tools 25.0.2、Android SDK Platform-Tools 25.x.x 或以上版本。
  • Android 4.4 或以上版本,且支持音视频的 Android 设备或模拟器(推荐使用真机)。
  • Android 设备已经连接到 Internet。

3 集成 SDK

3.1 (可选)新建项目

此步骤以如何创建新项目为例,如果是集成到已有项目,可忽略此步。
  1. 打开 Android Studio,选择菜单 “File > New > New Project”。

  2. 填写项目名及项目存储路径。

  3. 其它按照默认设置,单击 “Next”,最后单击 “Finish” 完成新工程创建。

3.2 导入 SDK

目前支持的平台架构包括:armeabi-v7a、arm64-v8a。

  1. 请参考 下载 SDK,下载最新版本的 SDK。

    数据流录制 SDK 文件夹中已包含对应版本的 Express-Video SDK(含白板功能)、ZegoWhiteboardView SDK、ZegoDocsView SDK,无需单独下载。

  2. 解压 SDK 至项目目录,如 “app/libs”。

    /Pics/ZegoRecorderPlayback/Android/QuickStarts/add_jar.png

  3. 添加 SDK 引用,进入到 “app” 目录,打开 “build.gradle” 文件。

    • 在 “defaultConfig” 节点添加 “ndk” 节点,指定支持的平台类型。

      /Pics/ZegoRecorderPlayback/Android/QuickStarts/insert_ndk_node.png

      ndk {
        abiFilters 'armeabi-v7a', 'arm64-v8a'
      }
    • 在 “android” 节点添加 “sourceSets” 节点,指定 “libs” 所在目录。

      sourceSets {
        main {
            jniLibs.srcDirs = ['zego_libs']
        }
      }
    • 在 “dependencies” 节点引入 “libs” 下所有的 jar。

      implementation fileTree(dir: 'zego_libs', include: ['*.jar'])

4 设置权限

请根据实际应用需要,设置应用所需权限。

进入 “app/src/main” 目录,打开 “AndroidManifest.xml” 文件,添加权限。

<!-- SDK 必须使用的权限 -->

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

因为 Android 6.0 在一些比较重要的权限上要求必须申请动态权限,不能只通过 “AndroidMainfest.xml” 文件申请静态权限。因此还需要参考执行如下代码,其中 “requestPermissions” 是 “Activity” 的方法。

String[] permissionNeeded = {
    "android.permission.WRITE_EXTERNAL_STORAGE",
    "android.permission.READ_EXTERNAL_STORAGE"};

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (ContextCompat.checkSelfPermission(this, "android.permission.WRITE_EXTERNAL_STORAGE") != PackageManager.PERMISSION_GRANTED ||
        ContextCompat.checkSelfPermission(this, "android.permission.READ_EXTERNAL_STORAGE") != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(permissionNeeded, 101);
    }
}

5 防止混淆代码

在 “proguard-rules.pro” 文件中,为 SDK 添加 -keep 类的配置,防止混淆 SDK 公共类名称。

-keep class **.zego.**{*;}