更新时间: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模块需要使用麦克风,需要动态申请权限。
(1)我们将依据相关法律法规,对人工智能生成合成内容添加相应标识(如在生成合成内容或者交互场景界面中添加的显式标识,采用技术措施在生成合成内容的文件元数据中添加的隐式标识)。您应确保您已仔细阅读并理解《人工智能生成合成内容标识办法》及其他相关的标识管理要求。您不得使用或尝试使用任何技术手段或其他方法删除、篡改、伪造、隐匿该等生成合成内容标识,不得为他人实施删除、篡改、伪造、隐匿该等生成合成内容标识行为提供工具或者服务,不得通过不正当标识手段损害他人合法权益。
(2)在特定场景下,为更好地满足您的使用需求,我们可能根据您的申请为您提供没有添加显式标识的人工智能生成合成内容。如您申请我们提供没有添加显式标识的生成合成内容的,您需承诺并保证:
①不利用该内容发布、传播任何虚假信息或从事其他任何违法违规活动;
②在发布或传播基于深度学习、虚拟现实、深度合成、生成式人工智能等新技术制作的非真实信息,或其他可能引发公众误解或混淆的信息内容时,应当以显著方式标识;
③在向第三方分享该内容或使用网络信息内容传播服务发布该内容或以其他方式使用该内容时,主动声明其为人工智能生成合成内容;
④遵守其他相关法律、法规、政策、办法的规定。
(3)如您违反上述约定,您应自行承担由此引起的所有责任,并赔偿由此给我们及第三方造成的全部损失(包括但不限于直接损失、间接损失、诉讼费、仲裁费、公证费、鉴定费、律师费、差旅费、保全费用、保全保险费、向任何第三方承担的责任、行政处罚、罚款等)。