集成SDK
更新时间: 2022/05/07 09:51:53
本文介绍如何集成云信的直播推流 SDK。
开发准备
集成SDK
本文是根据官网的直播推流 Demo 来介绍 SDK 的集成,可在网易云信官网下载最新的直播推流 Android Demo,来查看更多的实现细节。
组件及资源
开发者需要将直播推流 SDK 集成到应用中,包括静态库文件和相关的头文件。如下图所示:
直播推流 SDK 包含 demo、libs、docs 三个部分,在网易云信视频官网可以下载 Demo 和 SDK 包。
-
demo部分: 里面包含一个示例工程,实现了音视频直播推流功能,有完整的源代码。
-
docs目录: 包括 Livestreaming.jar 依赖包的 javadoc 文档,该文档详细说明了推流端 SDK 各接口 API 类的用法。
-
lib目录: 存放推流 SDK 的 Java 依赖包和底层动态链接库(支持armeabi-v7a、arm64-v8a平台架构),文件列表如下:
libs
├── 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工程的配置:
- 红色框:是 Demo 依赖 SDK 的 JAR 文件
- 绿色框:是 Demo 的 Java 代码部分
- 橙色框:是 Demo 依赖 SDK 的动态链接库文件。目前 SDK 支持主流的 ARMv7a, ARM64v8a 芯片体系架构
- 蓝色框:是 Demo 的布局文件
添加权限
打开AndroidManifest.xml
文件,配置直播相关的权限。
<!-- 权限声明 -->
<!-- 允许挂载和反挂载文件系统 -->
<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 公共类名称。
-keep class com.netease.LSMediaCapture.**{*;}
-keep class com.netease.vcloud.**{*;}