更新时间:2023年7月21日
本文介绍了如何使用硅基数字人服务提供的livesdk,包括下载安装、关键接口及代码示例。
工程下app模块添加如下配置:
dependencies {
api "org.webrtc:google-webrtc:1.0.32006"
//MQTT
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
...
}
在SDK中manifest已经添加网络、音频、蓝牙等权限申请,如果需要开启摄像头需要添加camera权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
/**
* @param uri 需要重采样的uri
* @Return 重采样输出文件路径
*/
String audioResample4Uri(Context context, Uri uri)
/**
* @param srcPath 需要重采样的文件路径
* @Return 重采样输出文件路径
*/
String audioResample4Path(Context context, String srcPath)
/**
* 音频文件转换成指定采样率的wav
* @param inputPath 输入wav路径
* @param outputPath 输出wav路径
* @return 0成功
*/
int transformWav(String inputPath, String outPath)
FFmpegUtil:生成ffmpeg相关命令行参数
MQTTClient: 客户端服务器通信相关
/**
* 初始化
*
* @param imOptions 连接mqtt相关参数
* @param callback 消息回调
*/
public MQTTClient(Context context, LiveOptions.IMOptions imOptions, MQTTCallback callback)
/**
* 订阅服务器消息
*/
public void subscribe()
/**
* 尝试链接后台服务器
* @param sessionId 连接session
* @param 发送topic
* @param 接收消息topic
*/
connect(String sessionId, String topicPub, String topicSub)
/**
*判断连接状态
*/
boolean isConnected()
/**
*向服务器发送消息
*/
void sendMessage(String msg)
/**
*释放资源
*/
void release()
{
//连接完成
void onConnectComplete();
//连接失败
void onConnectFail(String msg);
//连接断开
void onConnectLost(String msg);
//收到消息
void onMessage(String message);
}
/**
*@param context 上下文对象
*@param eglBaseContext gl对象
*@param sessionOptions 存储音频文件对象
*@param rtcOptions rtc连接参数
*@param peerObserver rtc回调
*@param sdpObserver sdp回调
*/
public RtcEngine(Context context, EglBase.Context eglBaseContext, LiveOptions.SessionOptions sessionOptions, LiveOptions.RTCOptions rtcOptions,PeerConnection.Observer peerObserver, SdpObserver sdpObserver)
class SessionOptions 会话相关配置
class IMOptions 即时通信业务相关配置
class RTCOptions rtc相关配置
/**
*@param context 上下文对象
*@param eglBaseContext gl对象
*@param sessionOptions 存储音频文件对象
*@param imOptions mqtt连接参数
*@param rtcOptions rtc连接参数
*@param callback 回调
*/
public LiveCore(@NotNull Context context, @NotNull EglBase.Context eglBaseContext,
@NotNull LiveOptions.SessionOptions sessionOptions,
@NotNull LiveOptions.IMOptions imOptions,
@NotNull LiveOptions.RTCOptions rtcOptions,
@NotNull LiveCallback callback)
/**
*连接rtc
*/
public void connect()
/**
*向后台发起关闭回话请求,会在onStop中回调关闭成功,注意要处理超时或IM信息丢失时强制关闭。
* 强制关闭连接可能会导致资源一段时间内无法释放。需要等会儿重试。
*/
public void sendStop()
/**
*请求推送rtmp流
*/
public void requestPush()
/**
*释放会话以及IM资源
*/
public void release()
/**
*创建连接
*/
public void createSession()
如果代码使用了混淆,请在proguard-rules.pro中配置:
-keep public class ai.guiji.live.sdk.**{*;}
RTC模块需要使用麦克风,需要动态申请权限。