集成SDK

更新时间: 2023/10/16 07:01:17

本文介绍如何集成云信的直播推流 SDK。

开发准备

集成SDK

本文是根据官网的直播推流 Demo 来介绍 SDK 的集成,可在网易云信官网下载最新的直播推流 Android Demo,来查看更多的实现细节。

组件及资源

开发者需要将直播推流 SDK 集成到应用中,包括静态库文件和相关的头文件。如下图所示:

pic

直播推流 SDK 包含 demo、libs、docs 三个部分。

  • demo部分: 里面包含一个示例工程,实现了音视频直播推流功能,有完整的源代码。

  • docs目录: 包括 Livestreaming.jar 依赖包的 javadoc 文档,该文档详细说明了推流端 SDK 各接口 API 类的用法。

  • lib目录: 存放推流 SDK 的 Java 依赖包和底层动态链接库(支持armeabi-v7a、arm64-v8a平台架构),文件列表如下:

objclibs
├── armeabi-v7a
│   ├── liblivestreaming.so
│   ├── libvideoeffect.so
├── arm64-v8a
│   ├── liblivestreaming.so
│   ├── libvideoeffect.so
│
├── VideoEffect-x.x.x.jar (采集以及滤镜Java层代码)
└── Livestreaming-x.x.x.jar (编码推流Java层代码)
  • assets/filter目录: 存放滤镜资源文件,包括healthy_mask_1.jpg、filter_map_first.png 等图片文件

将这些文件拷贝到你的工程的对应目录下,同时将 Livestreaming-x.x.x.jar、VideoEffect-x.x.x.jar 加入工程,即可完成配置。

库文件介绍

说明
Livestreaming-x.x.x.jar 直播API封装综合jar库
liblivestreaming.so 编码以及发送相关的so库
VideoEffect-x.x.x.jar 视频融合模块库(视频采集 、视频前处理 )
libvideoeffect.so 滤镜等前处理so库
assets/filter 滤镜依赖资源图片

快速集成

  • 解压下载的直播推流 SDK 开发包,将 jar 包、 so 动态库以及滤镜文件都导入工程。具体导入方式,请参考以下的具体说明

  • SDK包含三部分,一部分是jar 包,另一部分是 so 动态库,最后是滤镜相关的资源图片。其中 jar 包必须依赖,so 动态库分为 armeabi-v7a、arm64-v8a 两个架构,用户可以根据自身 App 支持的架构进行选择,还有一部分 assets/filter 下的滤镜文件,如果用户需要用到 SDK 自带的滤镜则必须加入,如不需要可以不添加。

  • 具体到工程中的配置可以参考如下SDK demo工程的配置:

pic

  • 红色框:是 Demo 依赖 SDK 的 JAR 文件
  • 绿色框:是 Demo 的 Java 代码部分
  • 橙色框:是 Demo 依赖 SDK 的动态链接库文件。目前 SDK 支持主流的 ARMv7a, ARM64v8a 芯片体系架构
  • 蓝色框:是 Demo 的布局文件

添加权限

打开AndroidManifest.xml 文件,配置直播相关的权限。

objc<!-- 权限声明 -->   
<!-- 允许挂载和反挂载文件系统 -->   
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />   
<!-- 允许程序向外部存储设备写数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序打开网络套接字 -->
<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.RECORD_AUDIO" />
<!-- 允许程序使用PowerManager WakeLocks以防止处理器休眠或者屏幕锁屏 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 允许程序获取Wifi网络状态信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许程序使用设备的camera -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 允许程序使用闪光灯 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- 允许程序获得设备信息 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-feature android:name="android.hardware.camera.autofocus"/>

<!-- 声明程序使用camera和自动对焦功能 -->
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>

防止代码混淆

请在 proguard-project.txt 文件中添加以下代码,为直播推流 SDK 添加 -keep 类的配置,可以防止混淆直播推流 SDK 公共类名称。

objc-keep class com.netease.LSMediaCapture.**{*;}
-keep class com.netease.vcloud.**{*;}
此文档是否对你有帮助?
有帮助
去反馈
  • 开发准备
  • 集成SDK
  • 组件及资源
  • 库文件介绍
  • 快速集成
  • 添加权限
  • 防止代码混淆