本文介绍在Android端通过低代码集成(含UI)方式实现主播端推流和观众端观看直播的功能。
背景信息
主播端推流和观众端观看是互动直播的基础场景。从集成的角度看,两个场景是独立于彼此的。用户可根据业务需要选择集成两个场景或其中一个场景。例如,只需要集成主播端推流的用户可以只集成主播端,避免接入不需要的模块而增加包大小。
前提条件
客户端集成前,请确保已经通过控制台创建应用并获取客户端集成需要的信息(应用ID,APP Key,低代码集成服务地址,低代码集成服务密钥)。创建指引请参见创建应用。
环境要求
Android端集成对环境的要求如下:
- 系统版本:仅支持Android 5.0及以上版本。
- API版本:仅支持21及以上版本。
- CPU架构:仅支持实体设备架构armeabi-v7a、arm64-v8a。
注意 不支持视频采集旋转,不支持USB外接摄像头。
主播端推流
- 基于Maven添加SDK远程依赖。
- 添加阿里云依赖仓库。
将下面的依赖库添加到项目工程根目录已有的build.gradle
文件中。
// 仓库地址
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/repositories/releases' }
}
}
- 添加SDK远程依赖。
将下面的依赖库添加到项目工程的app/build.gradle
文件中。
dependencies {
def LATEST_VERSION = ''
api "com.aliyun.roompaas.biz:liveroom:${LATEST_VERSION}"
}
说明 美颜库Queen的'1.9.1-official-pro'版本是免授权的高级美颜版本,详情请参见
美颜特效SDK。
- 配置应用权限。
主播推流直播,需要获取设备本向的摄像头使用权限,麦克风的使用仅限,WIFI网络的使用权限。在工程目录的
app/src/main/AndroidManifest.xml
文件中配置以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 添加混淆配置(可选)。
Android端SDK使用了反射,如果您的应用中打开了混淆开关,则需要添加proguard
配置。打开工程的 app/proguard-rules.pro 文件,添加如下-keep
类的配置:
-dontnote *.**
-dontwarn *.**
# live sdk
-keep class com.aliyun.** { *; }
-keep class com.alivc.** { *;}
-keep class com.cicada.** { *; }
# lwp
-keep class com.alibaba.dingpaas.** { *; }
-keep class com.dingtalk.mars.** { *; }
-keep class com.dingtalk.bifrost.** { *; }
-keep class com.dingtalk.mobile.** { *; }
-keep class org.android.spdy.** { *; }
# fastjson
-dontwarn com.alibaba.fastjson.**
-keepattributes Signature
-keepattributes *Annotation*
- 接入代码。
- 添加SDK类引用。
import com.aliyun.standard.liveroom.lib.LivePrototype;
- 全局初始化。需要传入控制台创建应用后获得的应用ID、对应Android端的APP Key、低代码集成服务地址,低代码集成服务密钥。
说明 如果您已经完成应用创建,请登录
低代码音视频工厂控制台。打开
应用管理页面,点击目标应用
操作列的集成方式,即可获取集成需要的配置信息。
示例代码// 低代码接入Android端初始化及认证
LivePrototype.InitParam param = new LivePrototype.InitParam();
param.appId = "<应用ID>"; //必传,在控制台创建低代码互动直播应用后获取的应用ID;
param.appKey = "<APP Key>"; //必传,在控制台创建低代码互动直播应用后获取的Android端的App Key;
param.serverHost = "<低代码集成服务地址>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务地址;
param.serverSecret = "<低代码集成服务密钥>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务密钥;
param.userId = "<用户身份标识>";//必传,自定义用户ID,仅支持英文和数字,最大长度36位;
LivePrototype.getInstance().init(this, param);
- 全局初始化成功后,配置
LivePrototype.OpenLiveParam
参数。
注意 主播端集成成功后,回调中会返回liveID。请记录liveID作为观众端集成的必要输入。
示例代码// 主播端:开启直播
String currentUserId = Const.getCurrentUserId();
LivePrototype.OpenLiveParam param = new LivePrototype.OpenLiveParam();
param.liveId = "xxx"; //在主播侧,liveId非必传,为空时内部会自动创建新直播
param.role = LivePrototype.Role.ANCHOR; //主播侧必填LivePrototype.Role.ANCHOR
param.nick = "用户" + currentUserId; // 用户自己账号系统
LivePrototype.getInstance().setup(this, param, new Callback<String>() {
@Override
public void onSuccess(String liveId) {
// 此处获取到主播liveId。观众进入直播间时,将此liveId配置到观众端参数
}
@Override
public void onError(String errorMsg) {
}
});
执行结果至此,您已搭建好一个完整的
互动直播的主播端直播推流逻辑。Android Studio编译并在真机运行后可以看到
开始直播界面(如下左图所示)。点击
开始直播后进入直播界面(如右图所示)。
观众端观看直播
- 基于Maven添加SDK远程依赖。
- 添加阿里云依赖仓库。
将下面的依赖库添加到项目工程根目录已有的build.gradle
文件中。
// 仓库地址
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/repositories/releases' }
}
}
- 添加SDK远程依赖。
将下面的依赖库添加到项目工程的app/build.gradle中。
dependencies {
def LATEST_VERSION = ''
api "com.aliyun.roompaas.biz:liveroom:${LATEST_VERSION}"
}
- 接入代码。
- 添加SDK类引用。
import com.aliyun.standard.liveroom.lib.LivePrototype
- 全局初始化。需要传入控制台创建应用后获得的应用ID、对应Android端的APP Key、低代码集成服务地址,低代码集成服务密钥。
说明 如果您已经完成应用创建,请登录
低代码音视频工厂控制台。打开
应用管理页面,点击目标应用
操作列的集成方式,即可获取集成需要的配置信息。
示例代码// 低代码接入Android端初始化及认证
LivePrototype.InitParam param = new LivePrototype.InitParam();
param.appId = "<应用ID>"; //必传,在控制台创建低代码互动直播应用后获取的应用ID;
param.appKey = "<APP Key>"; //必传,在控制台创建低代码互动直播应用后获取的iOS端的App Key;
param.serverHost = "<低代码集成服务地址>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务地址;
param.serverSecret = "<低代码集成服务密钥>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务密钥;
param.userId = "<用户身份标识>";//必传,自定义用户ID,仅支持英文和数字,最大长度36位;
LivePrototype.getInstance().init(this, param);
- 全局初始化成功后,配置
LivePrototype.OpenLiveParam
参数。
注意 观众端集成时,
liveID为必传参数。其获取方式与您的集成场景有关,详情如下:
- 如果您集成了本产品的主播端,并记录了回调信息中的liveID值,可直接填写记录的值。
- 如果您集成了本产品的主播端,但没有记录回调信息中的liveID值,可调用GetLiveRoom - 获取直播详情接口获取应用下所有的直播信息。然后选取对应liveID值填写。
- 如果您未使用本产品的主播端,可调用CreateLiveRoom - 创建直播接口,填写与您直播间相关的必要信息。然后使用接口返回的liveID值填写。
示例代码// 观众端:观看直播
String liveId = "xxx";//在观众侧,liveId必传。根据您的集成场景获取,详情请参见上述注意事项。
String currentUserId = Const.getCurrentUserId();
LivePrototype.OpenLiveParam param = new LivePrototype.OpenLiveParam();
param.role = LivePrototype.Role.AUDIENCE; //观众侧必传LivePrototype.Role.AUDIENCE
param.nick = "用户" + currentUserId;
param.liveId = liveId;
LivePrototype.getInstance().setup(this, param, new Callback<String>() {
@Override
public void onSuccess(String liveId) {
}
@Override
public void onError(String errorMsg) {
}
});
执行结果至此,您已搭建好一个完整的
互动直播观众端播流(观看直播)逻辑。Android Studio编译并在真机运行后可以看到以下界面。
开启直播回放功能
确定控制台已经开启回放功能(请参见配置直播回看)后,添加如下配置:
LivePrototype.OpenLiveParam param = new LivePrototype.OpenLiveParam();
// 略...
param.supportPlayback = true;
LivePrototype.getInstance().setup(context, param, callback);
后续步骤
低代码集成(含UI)场景下,完成主播端及观众端集成即可使用互动直播产品。如果低代码形态的功能无法满足业务需求,您可以通过进阶开发实现更高级的功能。详情请参见互动直播进阶开发。