更新时间:2019-11-20
接口名称 |
接口描述 |
---|---|
发起呼叫。 |
|
结束呼叫。 |
|
接听呼叫。 |
|
二次拨号。 |
|
保持通话。 |
|
恢复通话。 |
接口名称 |
接口描述 |
---|---|
设置视频窗口。 |
|
设置视频方向。 |
|
添加视频。 |
|
删除视频。 |
|
响应添加视频请求。 |
|
视频控制。 |
|
设置视频窗口属性。 |
|
设置摄像头采集方向。 |
|
设置窗口显示方向。 |
|
设置摄像头图片。 |
|
设置SVC视频窗口参数。 |
|
获取呼叫统计信息。 |
接口名称 |
接口描述 |
---|---|
获取设备列表。 |
|
打开本地预览窗口。 |
|
关闭本地预览窗口。 |
|
设置音频路由设备。 |
|
获取音频路由设备。 |
接口名称 |
接口描述 |
---|---|
开始播放音频文件。 |
|
停止播放音频文件。 |
接口描述
发起一路普通VOIP呼叫。
注意事项
呼叫ID作为一路通话的唯一标示,UI应保存并管理,以用于后继的呼叫相关操作。
方法定义
TSDK_API TSDK_RESULT tsdk_start_call(OUT TSDK_UINT32 *call_id, IN const TSDK_CHAR* callee_number, IN TSDK_BOOL is_video);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[out] call_id |
是 |
TSDK_UINT32 * |
呼叫的ID,标识唯一的呼叫。 |
[in] callee_number |
是 |
const TSDK_CHAR* |
被叫号码,最大有效长度255。 |
[in] is_video |
是 |
TSDK_BOOL |
是否发起视频呼叫。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//oc -(unsigned int)startCallWithNumber:(NSString *)number type:(TUP_CALL_TYPE)callType { if (nil == number || number.length == 0) { return 0; } [self resetUCVideoOrientAndIndexWithCallId:0]; TSDK_BOOL isVideo = ((TSDK_CALL_E_CALL_TYPE)callType==CALL_VIDEO)?TSDK_TRUE:TSDK_FALSE; TSDK_UINT32 callid = 0; TSDK_RESULT ret = tsdk_start_call(&callid,(TSDK_CHAR*)[number UTF8String], isVideo); DDLogInfo(@"Call_Log: tsdk_start_call = %d", ret); if (ret == 0) { CallLogMessage *callLogMessage = [[CallLogMessage alloc]init]; callLogMessage.calleePhoneNumber = number; callLogMessage.durationTime = 0; callLogMessage.startTime = [self nowTimeString]; callLogMessage.callLogType = OutgointCall; callLogMessage.callId = callid; callLogMessage.isConnected = NO; NSMutableArray *array = [[NSMutableArray alloc]init]; if ([self loadLocalCallHistoryData].count > 0) { array = [self loadLocalCallHistoryData]; } [array addObject:callLogMessage]; [self writeToLocalFileWith:array]; } return callid; }
接口描述
结束和其他用户的通话或者来电。通话双方均可以主动结束呼叫。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_end_call(IN TSDK_UINT32 call_id);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)closeCall:(unsigned int)callId { TSDK_UINT32 callid = (TSDK_UINT32)callId; TSDK_RESULT ret = tsdk_end_call(callid); DDLogInfo(@"Call_Log: tsdk_end_call = %d, callid:%d",ret,callId); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
被叫方收到呼叫请求时,调用该接口接听呼叫。
注意事项
若被叫方需要拒绝接听呼叫,则需要调用tsdk_end_call()接口。
方法定义
TSDK_API TSDK_RESULT tsdk_accept_call(IN TSDK_UINT32 call_id, IN TSDK_BOOL is_video);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
[in] is_video |
是 |
TSDK_BOOL |
是否接听视频呼叫。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC - (BOOL) answerComingCallType:(TUP_CALL_TYPE)callType callId:(unsigned int)callId { TSDK_RESULT ret = tsdk_accept_call((TSDK_UINT32)callId, callType == CALL_AUDIO ? TSDK_FALSE : TSDK_TRUE); DDLogInfo(@"Call_Log:answer call type is %d,result is %d, callid: %d",callType,ret,callId); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
一些业务场景中,用户需要通过终端按键与网络进行交互,如充值、拨打总机后再拨打分机号码、拨打客服中心号码等。本接口用于在通话中发送二次拨号信息,每调用一次发送一次信号。
注意事项
方法定义
TSDK_API TSDK_RESULT tsdk_send_dtmf(IN TSDK_UINT32 call_id, IN TSDK_E_DTMF_TONE tone);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
[in] tone |
是 |
DTMF键值。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC - (BOOL)sendDTMFWithDialNum:(NSString *)number callId:(unsigned int)callId { TSDK_E_DTMF_TONE dtmfTone = (TSDK_E_DTMF_TONE)[number intValue]; if ([number isEqualToString:@"*"]) { dtmfTone = TSDK_E_DTMF_STAR; } else if ([number isEqualToString:@"#"]) { dtmfTone = TSDK_E_DTMF_POUND; } TSDK_UINT32 callid = callId; TSDK_RESULT ret = tsdk_send_dtmf((TSDK_UINT32)callid,(TSDK_E_DTMF_TONE)dtmfTone); DDLogInfo(@"Call_Log: tsdk_send_dtmf = %@",(TSDK_SUCCESS == ret)?@"YES":@"NO"); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
保持通话。
注意事项
方法定义
TSDK_API TSDK_RESULT tsdk_hold_call(IN TSDK_UINT32 call_id);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)holdCallWithCallId:(unsigned int)callId { TSDK_RESULT ret = tsdk_hold_call(callId); DDLogInfo(@"Call_Log: tsdk_hold_call = %@",(TSDK_SUCCESS == ret)?@"YES":@"NO"); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
取消保持通话(恢复通话)。
注意事项
方法定义
TSDK_API TSDK_RESULT tsdk_unhold_call(IN TSDK_UINT32 call_id);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)unHoldCallWithCallId:(unsigned int)callId { TSDK_RESULT ret = tsdk_unhold_call(callId); DDLogInfo(@"Call_Log: tsdk_unhold_call = %@",(TSDK_SUCCESS == ret)?@"YES":@"NO"); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
用户建立视频呼叫时,调用本接口设置视频窗口与呼叫的绑定关系。
如果用户仅选择音频接听,则无需调用此接口。
注意事项
呼叫存在时,callid填写对应的有效值;呼叫不存在(未建立,主叫呼出时),callid填写非法值。
方法定义
TSDK_API TSDK_RESULT tsdk_set_video_window(IN TSDK_UINT32 call_id, IN TSDK_UINT32 count, IN const TSDK_S_VIDEO_WND_INFO *window);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
[in] count |
是 |
TSDK_UINT32 |
窗口个数,一般为2。 |
[in] window |
是 |
const TSDK_S_VIDEO_WND_INFO * |
视频窗口信息。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC - (BOOL)updateVideoWindowWithLocal:(id)localVideoView andRemote:(id)remoteVideoView andBFCP:(id)bfcpVideoView callId:(unsigned int)callId { TSDK_S_VIDEO_WND_INFO videoInfo[3]; memset_s(videoInfo, sizeof(TSDK_S_VIDEO_WND_INFO) * 2, 0, sizeof(TSDK_S_VIDEO_WND_INFO) * 2); videoInfo[0].video_wnd_type = TSDK_E_VIDEO_WND_LOCAL; videoInfo[0].render = (TSDK_UPTR)localVideoView; videoInfo[0].display_mode = TSDK_E_VIDEO_WND_DISPLAY_FULL; videoInfo[1].video_wnd_type = TSDK_E_VIDEO_WND_REMOTE; videoInfo[1].render = (TSDK_UPTR)remoteVideoView; videoInfo[1].display_mode = TSDK_E_VIDEO_WND_DISPLAY_CUT; videoInfo[2].video_wnd_type = TSDK_E_VIDEO_WND_AUX_DATA; videoInfo[2].render = (TSDK_UPTR)bfcpVideoView; TSDK_RESULT ret; videoInfo[2].display_mode = TSDK_E_VIDEO_WND_DISPLAY_CUT; ret = tsdk_set_video_window((TSDK_UINT32)callId, 3, videoInfo); DDLogInfo(@"Call_Log: tsdk_set_video_window = %d",ret); [self updateVideoRenderInfoWithVideoIndex:CameraIndexFront withRenderType:TSDK_E_VIDEO_WND_LOCAL andCallId:callId]; [self updateVideoRenderInfoWithVideoIndex:CameraIndexFront withRenderType:TSDK_E_VIDEO_WND_REMOTE andCallId:callId]; return (TSDK_SUCCESS == ret); }
接口描述
设置移动视频设备。
注意事项
用于移动设备。
方法定义
TSDK_API TSDK_RESULT tsdk_set_video_orient(IN TSDK_UINT32 call_id, IN TSDK_UINT32 index, IN TSDK_S_VIDEO_ORIENT *video_orient);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
[in] index |
是 |
TSDK_UINT32 |
设备(摄像头)索引。 |
[in] video_orient |
是 |
视频方向(横竖屏)参数。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC - (void)resetUCVideoOrientAndIndexWithCallId:(unsigned int)callid { TSDK_S_VIDEO_ORIENT orient; orient.choice = 1; orient.portrait = 0; orient.landscape = 0; orient.seascape = 1; tsdk_set_video_orient(callid, CameraIndexFront, &orient); }
接口描述
发起添加视频(音频转视频呼叫)请求。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_add_video(IN TSDK_UINT32 call_id);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)upgradeAudioToVideoCallWithCallId:(unsigned int)callId { TSDK_RESULT ret = tsdk_add_video((TSDK_UINT32)callId); DDLogInfo(@"Call_Log: tsdk_add_video = %d",ret); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
发起删除视频(视频转音频呼叫)请求。
注意事项
前提条件:视频通话已建立,主被叫正在通话中。
方法定义
TSDK_API TSDK_RESULT tsdk_del_video(IN TSDK_UINT32 call_id);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)downgradeVideoToAudioCallWithCallId:(unsigned int)callId { TSDK_RESULT ret = tsdk_del_video((TSDK_UINT32)callId); DDLogInfo(@"Call_Log: tsdk_del_video = %d",ret); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
对方请求音频转视频呼叫时,本方选择同意或者拒绝。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_reply_add_video(IN TSDK_UINT32 call_id, IN TSDK_BOOL is_accept);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
[in] is_accept |
是 |
TSDK_BOOL |
是否同意音频转视频呼叫的请求,取值:
|
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)replyAddVideoCallIsAccept:(BOOL)accept callId:(unsigned int)callId { TSDK_BOOL isAccept = accept; TSDK_RESULT ret = tsdk_reply_add_video((TSDK_UINT32)callId , isAccept); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
该接口用于控制暂停或继续视频采集。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_video_control(IN TSDK_UINT32 call_id, IN TSDK_S_VIDEO_CTRL_INFO *video_control);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
[in] video_control |
是 |
视频控制参数。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(void)videoControlWithCmd:(EN_VIDEO_OPERATION)control andModule:(EN_VIDEO_OPERATION_MODULE)module andIsSync:(BOOL)isSync callId:(unsigned int)callId { DDLogInfo(@"videoControlWithCmd :%d module: %d isSync:%d",control,module,isSync); TSDK_S_VIDEO_CTRL_INFO videoControlInfos; memset_s(&videoControlInfos, sizeof(TSDK_S_VIDEO_CTRL_INFO), 0, sizeof(TSDK_S_VIDEO_CTRL_INFO)); TSDK_UINT32 call_id = (TSDK_UINT32)callId; videoControlInfos.object = module; videoControlInfos.operation = control; videoControlInfos.is_sync = isSync; TSDK_RESULT ret = tsdk_video_control(call_id, &videoControlInfos); DDLogInfo(@"Call_Log: tsdk_video_control result= %@",(TSDK_SUCCESS == ret)?@"YES":@"NO"); }
接口描述
该接口用于设置视频显示窗口属性。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_set_video_render(IN TSDK_UINT32 call_id, IN const TSDK_S_VIDEO_RENDER_INFO* video_render);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
[in] video_render |
是 |
视频显示窗口属性。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC - (void)updateVideoRenderInfoWithVideoIndex:(CameraIndex)index withRenderType:(TSDK_E_VIDEO_WND_TYPE)renderType andCallId:(unsigned int)callid { TSDK_UINT32 mirrorType = 0; TSDK_UINT32 displaytype = 0; //本端视频,displaytype为1,镜像模式根据前后摄像头进行设置 if (TSDK_E_VIDEO_WND_LOCAL == renderType) { //前置镜像模式为2(左右镜像),后置镜像模式为0(不做镜像) switch (index) { case CameraIndexBack: { mirrorType = 0; break; } case CameraIndexFront: { mirrorType = 2; break; } default: break; } displaytype = 2; } //远端视频,镜像模式为0(不做镜像),显示模式为0(拉伸模式) else if (TSDK_E_VIDEO_WND_REMOTE == renderType) { mirrorType = 0; displaytype = 1; } else { DDLogInfo(@"rendertype is not remote or local"); } TSDK_S_VIDEO_RENDER_INFO renderInfo; renderInfo.render_type = (TSDK_E_VIDEO_WND_TYPE)renderType; renderInfo.display_type = (TSDK_E_VIDEO_WND_DISPLAY_MODE)displaytype; renderInfo.mirror_type = (TSDK_E_VIDEO_WND_MIRROR_TYPE)mirrorType; TSDK_RESULT ret_video_render_info = tsdk_set_video_render(callid, &renderInfo); DDLogInfo(@"tsdk_set_video_render : %d", ret_video_render_info); }
接口描述
该接口用于设置摄像头采集方向。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_set_capture_rotation(IN TSDK_UINT32 call_id, IN TSDK_UINT32 camera_index, IN TSDK_UINT32 capture_rotation);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
[in] camera_index |
是 |
TSDK_UINT32 |
采集设备(摄像头)索引。 |
[in] capture_rotation |
是 |
TSDK_UINT32 |
摄像头采集角度 {0,1,2,3} 仅对移动平台有效,默认为0 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)rotationCameraCapture:(NSUInteger)ratation callId:(unsigned int)callId { TSDK_RESULT ret = tsdk_set_capture_rotation((TSDK_UINT32)callId , (TSDK_UINT32)_cameraCaptureIndex, (TSDK_UINT32)ratation); DDLogInfo(@"Call_Log: tsdk_set_capture_rotation = %d",ret); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
该接口用于设置窗口显示方向。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_set_display_rotation(IN TSDK_UINT32 call_id, IN TSDK_E_VIDEO_WND_TYPE window_type, IN TSDK_UINT32 display_rotation);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
[in] window_type |
是 |
视频窗口类型。 |
|
[in] display_rotation |
是 |
TSDK_UINT32 |
窗口显示角度 {0,1,2,3} 仅对移动平台有效,默认为0。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)rotationVideoDisplay:(NSUInteger)orientation callId:(unsigned int)callId { TSDK_RESULT ret_rotation = tsdk_set_display_rotation((TSDK_UINT32)callId, TSDK_E_VIDEO_WND_LOCAL, (TSDK_UINT32)orientation); DDLogInfo(@"tsdk_set_display_rotation : %d", ret_rotation); return (TSDK_SUCCESS == ret_rotation); return NO; }
接口描述
该接口用于设置摄像头图片。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_set_camera_picture(IN TSDK_UINT32 call_id, IN TSDK_CHAR *file_name);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫ID。 |
[in] file_name |
是 |
TSDK_CHAR * |
文件名,不超过1920*1200的BMP格式图片。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)setVideoCaptureFileWithcallId:(unsigned int)callId { NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"tup_call_closeCramea_img" ofType:@"bmp"]; TSDK_RESULT ret = tsdk_set_camera_picture((TSDK_UINT32)callId, (TSDK_CHAR *)[imagePath UTF8String]); DDLogInfo(@"Call_Log: tsdk_set_camera_picture = %@",(TSDK_SUCCESS == ret)?@"YES":@"NO"); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
设置SVC会议视频窗口信息。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_set_svc_video_window(IN TSDK_UINT32 call_id, IN TSDK_UINT32 count, IN const TSDK_S_SVC_VIDEO_WND_INFO *window); |
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
[in] count |
是 |
TSDK_UINT32 |
SVC窗口个数。 |
[in] window |
是 |
const TSDK_S_SVC_VIDEO_WND_INFO * |
SVC视频窗口信息。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功则返回TSDK_SUCCESS,失败则返回相应错误码。 |
代码示例
- (BOOL)setSvcVideoWindowWithFirstSVCView:(id)firstSVCView secondSVCView:(id)SecondSVCView thirdSVCView:(id)thirdSVCView remote:(id)remoteSVCView { TSDK_S_SVC_VIDEO_WND_INFO svcWindow[4]; memset_s(svcWindow, sizeof(TSDK_S_SVC_VIDEO_WND_INFO) * 4, 0, sizeof(TSDK_S_SVC_VIDEO_WND_INFO) * 4); svcWindow[0].render = (TSDK_UPTR)remoteSVCView; svcWindow[0].label = [self.currentJoinConfIndInfo.svcLable[0] intValue]; svcWindow[0].width = 960; svcWindow[0].height = 540; svcWindow[0].max_bandwidth = 1300; svcWindow[1].render = (TSDK_UPTR)firstSVCView; svcWindow[1].label = [self.currentJoinConfIndInfo.svcLable[1] intValue]; svcWindow[1].width = 160; svcWindow[1].height = 90; svcWindow[1].max_bandwidth = 100; svcWindow[2].render = (TSDK_UPTR)SecondSVCView; svcWindow[2].label = [self.currentJoinConfIndInfo.svcLable[2] intValue]; svcWindow[2].width = 160; svcWindow[2].height = 90; svcWindow[2].max_bandwidth = 100; svcWindow[3].render = (TSDK_UPTR)thirdSVCView; svcWindow[3].label = [self.currentJoinConfIndInfo.svcLable[3] intValue]; svcWindow[3].width = 160; svcWindow[3].height = 90; svcWindow[3].max_bandwidth = 100; TSDK_RESULT ret; ret = tsdk_set_svc_video_window((TSDK_UINT32)self.currentCallId, 4, svcWindow); [self updateVideoRenderInfoWithVideoIndex:CameraIndexFront withRenderType:TSDK_E_VIDEO_WND_LOCAL andCallId:self.currentCallId]; [self updateVideoRenderInfoWithVideoIndex:CameraIndexFront withRenderType:TSDK_E_VIDEO_WND_REMOTE andCallId:self.currentCallId]; return (TSDK_SUCCESS == ret); } |
接口描述
获取呼叫统计信息。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_get_call_statistic_info(IN TSDK_UINT32 call_id, OUT TSDK_S_CALL_STATISTIC_INFO *statistic_info); |
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] call_id |
是 |
TSDK_UINT32 |
呼叫的ID,标识唯一的呼叫。 |
[out] statistic_info |
是 |
呼叫统计信息。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功则返回TSDK_SUCCESS,失败则返回相应错误码。 |
代码示例
None
|
接口描述
获取音频视频设备列表。
注意事项
应用程序在任何阶段均可以获取当前可用的音视频设备信息,为更方便地进行后继具体设备管理,建议应用程序在初始化阶段和系统检测到设备变化时,获取设备信息并保存维护。
方法定义
TSDK_API TSDK_RESULT tsdk_get_devices(IN TSDK_E_DEVICE_TYPE device_type, IO TSDK_UINT32* num, OUT TSDK_S_DEVICE_INFO* device_info);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] device_type |
是 |
设备类型。
|
|
[in/out] num |
是 |
TSDK_UINT32 * |
输入时表示上层分配的设备个数,输出时表示获取到得设备的个数。 |
[out] device_info |
是 |
设备信息数组指针。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)obtainDeviceListWityType:(DEVICE_TYPE)deviceType { DDLogInfo(@"current device type: %d",deviceType); TSDK_UINT32 deviceNum = 0; TSDK_S_DEVICE_INFO *deviceInfo; TSDK_RESULT ret = tsdk_get_devices((TSDK_E_DEVICE_TYPE)deviceType, &deviceNum, deviceInfo); DDLogInfo(@"Call_Log: tsdk_get_devices = %#x,count:%d",ret,deviceNum); if (deviceNum>0) { DDLogInfo(@"again"); deviceInfo = new TSDK_S_DEVICE_INFO[deviceNum]; TSDK_RESULT rets = tsdk_get_devices((TSDK_E_DEVICE_TYPE)deviceType, &deviceNum, deviceInfo); DDLogInfo(@"Call_Log: tsdk_get_devices = %#x,count:%d",rets,deviceNum); for (int i = 0; i<deviceNum; i++) { DDLogInfo(@"Call_Log: ulIndex:%d,strName:%s,string:%@",deviceInfo[i].index,deviceInfo[i].device_name,[NSString stringWithUTF8String:deviceInfo[i].device_name]); } } delete [] deviceInfo; return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
打开本地预览窗口。
注意事项
该接口一般用于设备设置时,检测本地摄像头工作状态是否正常。
方法定义
TSDK_API TSDK_RESULT tsdk_open_video_preview( IN TSDK_UPTR handle, IN TSDK_UINT32 index )
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] handle |
是 |
TSDK_UPTR |
窗口句柄。 |
[in] index |
是 |
TSDK_UINT32 |
摄像头索引。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC - (BOOL)videoPreview:(unsigned int)cameraIndex toView:(id) viewHandler { _videoPreview = viewHandler; TSDK_RESULT ret = tsdk_open_video_preview((TSDK_UPTR)viewHandler, (TSDK_UINT32)cameraIndex); DDLogInfo(@"Camera_Log:tsdk_open_video_preview result is %d", ret); return ret == TSDK_SUCCESS ? YES : NO; }
接口描述
关闭并删除本地预览窗口。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_close_video_preview( TSDK_VOID )
参数描述
无。
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(void)stopVideoPreview { tsdk_close_video_preview(); }
接口描述
设置移动音频路由设备。
注意事项
用于移动设备。
方法定义
TSDK_API TSDK_RESULT tsdk_set_mobile_audio_route(IN TSDK_E_MOBILE_AUIDO_ROUTE route);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] route |
是 |
移动音频路由设备类型。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)configAudioRoute:(ROUTE_TYPE)route { TSDK_E_MOBILE_AUIDO_ROUTE audioRoute = (TSDK_E_MOBILE_AUIDO_ROUTE)route; TSDK_RESULT result = tsdk_set_mobile_audio_route(audioRoute); DDLogInfo(@"tsdk_set_mobile_audio_route result is %@, audioRoute is :%d",result == TSDK_SUCCESS ? @"YES" : @"NO",audioRoute); return result == TSDK_SUCCESS ? YES : NO; }
接口描述
获取移动音频路由设备。
注意事项
用于移动设备。
方法定义
TSDK_API TSDK_RESULT tsdk_get_mobile_audio_route(OUT TSDK_E_MOBILE_AUIDO_ROUTE *route);
参数描述
参数名 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[out] route |
是 |
移动音频路由设备类型。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(ROUTE_TYPE)obtainMobileAudioRoute { TSDK_E_MOBILE_AUIDO_ROUTE route; TSDK_RESULT result = tsdk_get_mobile_audio_route(&route); DDLogInfo(@"tsdk_get_mobile_audio_route result is %d, audioRoute is :%d",result,route); return (ROUTE_TYPE)route; }
接口描述
播放本地音频文件,包括振铃音、回铃音、拨号(提示)音、DTMF音、忙碌提示音和本地按键音等。
注意事项
WAV文件,目前支持PCMA、PCMU、G.729格式或采样精度为8或16位、采样率8k~48K的PCM数据,支持双声道。
方法定义
TSDK_API TSDK_RESULT tsdk_start_play_media(IN TSDK_UINT32 loops, IN const TSDK_CHAR* play_file, OUT TSDK_INT32* play_handle);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] loops |
是 |
TSDK_UINT32 |
循环次数,0表示循环播放。 |
[in] play_file |
是 |
const TSDK_CHAR * |
待播放的音频文件,目前支持wav格式。 |
[out] play_handle |
是 |
TSDK_INT32 * |
播放句柄(用于停止播放时的参数)。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)mediaStartPlayWithFile:(NSString *)filePath { if (_playHandle >= 0) { return NO; } TSDK_RESULT result = tsdk_start_play_media(0, (TSDK_CHAR *)[filePath UTF8String], &_playHandle); DDLogInfo(@"Call_Log: tsdk_start_play_media result= %xd , playhandle = %d",result,_playHandle); return result == TSDK_SUCCESS ? YES : NO; }
接口描述
停止音频文件播放。
注意事项
无。
方法定义
TSDK_API TSDK_RESULT tsdk_stop_play_media(IN TSDK_INT32 play_handle);
参数描述
参数 |
是否必须 |
类型 |
描述 |
---|---|---|---|
[in] play_handle |
是 |
TSDK_INT32 |
播放句柄。 |
返回值
类型 |
描述 |
---|---|
TSDK_RESULT |
成功返回TSDK_SUCCESS,失败返回相应错误码。 |
代码示例
//OC -(BOOL)mediaStopPlay { TSDK_RESULT result = tsdk_stop_play_media(_playHandle); _playHandle = -1; DDLogInfo(@"Call_Log: tsdk_stop_play_media result= %d",result); return result == TSDK_SUCCESS ? YES : NO; }