直播
Android
产品介绍
简介
主要功能
产品优势
应用场景
使用限制
快速开始
推流端SDK
概述
更新日志
集成SDK
开发指南
实现流程
进阶功能
API 参考
错误码
播放器SDK
播放器产品简介
更新日志
下载 SDK 和示例代码
跑通示例项目
集成SDK
开发指南
实现播放功能
播放器相关回调
播放控制
时间戳校对方案
拉流地址预调度
音视频数据回调
API 参考
最佳实践
OBS推流使用指南
常见问题
服务协议

集成SDK

更新时间: 2022/05/07 09:51:53

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

开发准备

  • 已注册网易云信视频官网,并且已经申请开通云直播服务。
  • 通过网易云信视频服务端接口调用,或官网管理控制台,创建频道并获取视频云直播推流地址。
  • 下载最新版的直播推流SDK

集成SDK

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

组件及资源

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

pic

直播推流 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工程的配置:

pic

  • 红色框:是 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.**{*;}
此文档是否对你有帮助?
有帮助
我要吐槽
  • 开发准备
  • 集成SDK
  • 组件及资源
  • 库文件介绍
  • 快速集成
  • 添加权限
  • 防止代码混淆