-
Notifications
You must be signed in to change notification settings - Fork 53
Info&Error_Listener
zanxiaofei edited this page Jul 25, 2017
·
2 revisions
KSYRecordKit类中提供以下两种回调接口,
- OnInfoListener 录制过程中状态变更事件回调,状态码为正数。
- OnErrorListener 录制过程中错误事件回调,事件触发时,录制停止,状态码为负数
接口延用KSYStreamer中的定义,状态码定义在推流库的StreamerConstants中
示例代码参考(RecordActiviy中mOnInfoListener和mOnErrorListener)
名称 | 数值 | 含义 | msg1 |
---|---|---|---|
KSY_STREAMER_CAMERA_INIT_DONE | 1000 | 初始化完毕 | N/A |
KSY_STREAMER_OPEN_FILE_SUCCESS | 1 | 录制成功开始 | N/A |
KSY_STREAMER_FILE_RECORD_STOPPED | 2 | 录制停止回调,下一次录制开始需要在收到该回调后再进行 | N/A |
名称 | 数值 | 含义 | msg1 |
---|---|---|---|
KSY_STREAMER_ERROR_AV_ASYNC | -2004 | 音视频采集pts差值超过5s | 音视频采集pts具体差值,单位ms |
KSY_STREAMER_VIDEO_ENCODER_ERROR_UNSUPPORTED | -1004 | 编码器初始化失败 | N/A |
KSY_STREAMER_VIDEO_ENCODER_ERROR_UNKNOWN | -1003 | 视频编码失败 | N/A |
KSY_STREAMER_AUDIO_ENCODER_ERROR_UNSUPPORTED | -1008 | 音频初始化失败 | N/A |
KSY_STREAMER_AUDIO_ENCODER_ERROR_UNKNOWN | -1011 | 音频编码失败 | N/A |
KSY_STREAMER_CAMERA_ERROR_UNKNOWN | -2001 | 摄像头未知错误 | N/A |
KSY_STREAMER_CAMERA_ERROR_START_FAILED | -2002 | 打开摄像头失败 | N/A |
KSY_STREAMER_CAMERA_ERROR_SERVER_DIED | -2006 | 系统Camera服务进程退出 | N/A |
KSY_STREAMER_AUDIO_RECORDER_ERROR_START_FAILED | -2003 | 录音开启失败 | N/A |
KSY_STREAMER_AUDIO_RECORDER_ERROR_UNKNOWN | -2005 | 录音开启未知错误 | N/A |
KSY_STREAMER_CAMERA_ERROR_EVICTED | -2007 | Camera服务异常退出 | N/A |
KSY_STREAMER_FILE_PUBLISHER_ERROR_UNKNOWN | -4000 | 文件录制未知错误 | N/A |
KSY_STREAMER_FILE_PUBLISHER_OPEN_FAILED | -4001 | 文件录制生成文件失败 | N/A |
KSY_STREAMER_FILE_PUBLISHER_WRITE_FAILED | -4002 | 文件录制写文件失败 | N/A |
KSY_STREAMER_FILE_PUBLISHER_CLOSE_FAILED | -4003 | 文件录制关闭失败 | N/A |
KSY_STREAMER_FILE_PUBLISHER_FORMAT_NOT_SUPPORTED | -4004 | 文件录制,文件格式不支持 | N/A |
KSYEditKit类中提供以下两种回调接口
- OnInfoListener 编辑合成过程中状态变更事件回调,状态码为正数
- OnErrorListener 编辑合成过程中错误事件回调,状态码为负数
名称 | 数值 | 含义 | msgs |
---|---|---|---|
SHORTVIDEO_COMPOSE_START | 1 | 合成开始 | N/A |
SHORTVIDEO_COMPOSE_FINISHED | 2 | 合成结束 | msg[0] 合成后文件路径,一般为合成时传入的文件路径 |
SHORTVIDEO_GET_KS3AUTH | 3 | KS3鉴权 | msg[0]~msg[5] 获取KS3的鉴权Token必要信息,由KS3Client生成 |
示例代码
private KSYEditKit.OnInfoListener mOnInfoListener = new KSYEditKit.OnInfoListener() {
@Override
public Object onInfo(int type, String... msgs) {
if (type == ShortVideoConstants.SHORTVIDEO_COMPOSE_START) {
Log.d(TAG, "compose start");
//停止编辑预览
stopEditPreview();
mBeautySpinner.setSelection(0);
if (mComposeAlertDialog != null) {
mComposeAlertDialog.setCancelable(false);
mComposeAlertDialog.show();
//开始显示合成过程进度条
mComposeAlertDialog.composeStarted();
}
return null;
} else if (type == ShortVideoConstants.SHORTVIDEO_COMPOSE_FINISHED) {
Log.d(TAG, "compose finished");
if (mComposeAlertDialog != null) {
//关闭合成过程进度条,开启合成文件预览,msg[0]为合成后文件本地路径
mComposeAlertDialog.composeFinished(msgs[0]);
mComposeFinished = true;
}
// 向SDK返回上传必须的信息,以触发文件上传,返回null时不会触发文件上传
//"ksvsdemo"为bucketInfo,从KS3云服务申请
//mCurObjectKey:上传文件名(可添加子目录)
//mPutObjectResponseHandler:上传过程回调
mCurObjectKey = getPackageName() + "/" + System.currentTimeMillis() + ".mp4";
KS3ClientWrap.KS3UploadInfo bucketInfo = new KS3ClientWrap.KS3UploadInfo
("ksvsdemo", mCurObjectKey, mPutObjectResponseHandler);
return bucketInfo;
} else if (type == ShortVideoConstants.SHORTVIDEO_GET_KS3AUTH) {
//SDK返回获取KS3鉴权Token必要的信息
if (msgs.length == 6) {
if (mTokenTask == null) {
mTokenTask = new KS3TokenTask(getApplicationContext());
}
//同步向AppServer请求KS3鉴权Token,返回null上传失败
return mTokenTask.requsetTokenToAppServer(msgs[0], msgs[1],
msgs[2], msgs[3], msgs[4], msgs[5]);
} else {
return null;
}
}
return null;
}
名称 | 数值 | 含义 | msgs |
---|---|---|---|
SHORTVIDEO_ERROR_SDK_AUTHFAILED | -1 | SDK鉴权失败,无法合成 | N/A |
SHORTVIDEO_ERROR_UPLOAD_PARAMS_ERROR | -2 | App传入上传参数错误,无法上传 | N/A |
SHORTVIDEO_ERROR_UPLOAD_KS3_TOKEN_ERROR | -3 | KS3鉴权失败,上传失败 | N/A |
SHORTVIDEO_ERROR_COMPOSE_FAILED_UNKNOWN | -4000 | 文件合成未知错误 | N/A |
SHORTVIDEO_ERROR_COMPOSE_FILE_OPEN_FAILED | -4001 | 文件合成生成文件失败 | N/A |
SHORTVIDEO_ERROR_COMPOSE_FILE_WRITE_FAILED | -4002 | 文件合成写文件失败 | N/A |
SHORTVIDEO_ERROR_COMPOSE_FILE_CLOSE_FAILED | -4003 | 文件合成文件关闭失败 | N/A |
SHORTVIDEO_ERROR_COMPOSE_FILE_FORMAT_NOT_SUPPORTED | -4004 | 文件合成,文件格式不支持 | N/A |
示例代码
private KSYEditKit.OnErrorListener mOnErrorListener = new KSYEditKit.OnErrorListener() {
@Override
public void onError(int type, long msg) {
switch (type) {
case ShortVideoConstants.SHORTVIDEO_ERROR_COMPOSE_FAILED_UNKNOWN:
case ShortVideoConstants.SHORTVIDEO_ERROR_COMPOSE_FILE_CLOSE_FAILED:
case ShortVideoConstants.SHORTVIDEO_ERROR_COMPOSE_FILE_FORMAT_NOT_SUPPORTED:
case ShortVideoConstants.SHORTVIDEO_ERROR_COMPOSE_FILE_OPEN_FAILED:
case ShortVideoConstants.SHORTVIDEO_ERROR_COMPOSE_FILE_WRITE_FAILED:
Log.d(TAG, "compose failed:" + type);
Toast.makeText(EditActivity.this,
"Compose Failed:" + type, Toast.LENGTH_LONG).show();
if (mComposeAlertDialog != null) {
mComposeAlertDialog.closeDialog();
EditActivity.this.startEditPreview();
}
break;
case ShortVideoConstants.SHORTVIDEO_ERROR_SDK_AUTHFAILED:
Log.d(TAG, "sdk auth failed:" + type);
Toast.makeText(EditActivity.this,
"Auth failed can't start compose:" + type, Toast.LENGTH_LONG).show();
break;
case ShortVideoConstants.SHORTVIDEO_ERROR_UPLOAD_KS3_TOKEN_ERROR:
Log.d(TAG, "ks3 upload token error, upload to ks3 failed");
Toast.makeText(EditActivity.this,
"Auth failed can't start upload:" + type, Toast.LENGTH_LONG).show();
break;
}
}
};
KS3Client提供PutObjectResponseHandler回调接口,返回上传过程中信息
示例代码
private PutObjectResponseHandler mPutObjectResponseHandler = new PutObjectResponseHandler() {
@Override
public void onTaskFailure(int statesCode, Ks3Error error, Header[] responceHeaders, String response, Throwable paramThrowable) {
//上传失败
Log.e(TAG, "onTaskFailure:" + statesCode);
if (mComposeAlertDialog != null) {
mComposeAlertDialog.uploadFinished(false);
}
}
@Override
public void onTaskSuccess(int statesCode, Header[] responceHeaders) {
//上传成功,开始获取上传后文件路径
Log.d(TAG, "onTaskSuccess:" + statesCode);
if (mComposeAlertDialog != null) {
mComposeAlertDialog.uploadFinished(true);
}
}
@Override
public void onTaskStart() {
Log.d(TAG, "onTaskStart");
//上传成功,开始显示上传过程进度条
if (mComposeAlertDialog != null) {
mComposeAlertDialog.uploadStarted();
}
}
@Override
public void onTaskFinish() {
Log.d(TAG, "onTaskFinish");
}
@Override
public void onTaskCancel() {
Log.d(TAG, "onTaskCancel");
}
@Override
public void onTaskProgress(double progress) {
//上传进度回调,更新上传进度
if (mComposeAlertDialog != null) {
mComposeAlertDialog.uploadProgress(progress);
}
}
};