智慧服务,成就美好体验 项目咨询

主页 > 服务与支持 > 开发平台 > 客户端SDK参考 > iOS Native SDK > 接口参考 音视频呼叫

入门使用

音视频呼叫

更新时间:2019-11-20

音频呼叫

接口名称

接口描述

tsdk_start_call

发起呼叫。

tsdk_end_call

结束呼叫。

tsdk_accept_call

接听呼叫。

tsdk_send_dtmf

二次拨号。

tsdk_hold_call

保持通话。

tsdk_unhold_call

恢复通话。

视频呼叫

接口名称

接口描述

tsdk_set_video_window

设置视频窗口。

tsdk_set_video_orient

设置视频方向。

tsdk_add_video

添加视频。

tsdk_del_video

删除视频。

tsdk_reply_add_video

响应添加视频请求。

tsdk_video_control

视频控制。

tsdk_set_video_render

设置视频窗口属性。

tsdk_set_capture_rotation

设置摄像头采集方向。

tsdk_set_display_rotation

设置窗口显示方向。

tsdk_set_camera_picture

设置摄像头图片。

tsdk_set_svc_video_window

设置SVC视频窗口参数。

tsdk_get_call_statistic_info

获取呼叫统计信息。

设备管理

接口名称

接口描述

tsdk_get_devices

获取设备列表。

tsdk_open_video_preview

打开本地预览窗口。

tsdk_close_video_preview

关闭本地预览窗口。

tsdk_set_mobile_audio_route

设置音频路由设备。

tsdk_get_mobile_audio_route

获取音频路由设备。

媒体

接口名称

接口描述

tsdk_start_play_media

开始播放音频文件。

tsdk_stop_play_media

停止播放音频文件。

tsdk_start_call

接口描述

发起一路普通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_end_call

接口描述

结束和其他用户的通话或者来电。通话双方均可以主动结束呼叫。

注意事项

无。

方法定义

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_accept_call

接口描述

被叫方收到呼叫请求时,调用该接口接听呼叫。

注意事项

若被叫方需要拒绝接听呼叫,则需要调用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_send_dtmf

接口描述

一些业务场景中,用户需要通过终端按键与网络进行交互,如充值、拨打总机后再拨打分机号码、拨打客服中心号码等。本接口用于在通话中发送二次拨号信息,每调用一次发送一次信号。

注意事项

  • 处于通话中才可以发送二次拨号信息。
  • TSDK不提供DTMF按键音功能。为了实现更友好的最终用户体验,UI应同步调用SDK提供的媒体播放接口或系统提供的播放接口,实现播放DTMF按键音。

方法定义

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

TSDK_E_DTMF_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_hold_call

接口描述

保持通话。

注意事项

  • 处于通话中才可以调用该接口。
  • 视频通话被保持时,视频将会自动被关闭,恢复时,视频将会自动打开。

方法定义

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_unhold_call

接口描述

取消保持通话(恢复通话)。

注意事项

  • 处于通话保持状态才可以调用该接口。
  • 因通话双方均可以在本端处于通话态发起保持操作,即通话可能会处于双向保持态,在任一保持方发起恢复通话时,仅能恢复本端通话状态,不会恢复对端的通话状态。
  • 视频通话双向保持状态中,任一方先恢复通话,不会自动打开视频;双方均恢复通话后,视频才会打开。

方法定义

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;
}
 

tsdk_set_video_window

接口描述

用户建立视频呼叫时,调用本接口设置视频窗口与呼叫的绑定关系。

如果用户仅选择音频接听,则无需调用此接口。

注意事项

呼叫存在时,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_set_video_orient

接口描述

设置移动视频设备。

注意事项

用于移动设备。

方法定义

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_S_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_add_video

接口描述

发起添加视频(音频转视频呼叫)请求。

注意事项

无。

方法定义

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_del_video

接口描述

发起删除视频(视频转音频呼叫)请求。

注意事项

前提条件:视频通话已建立,主被叫正在通话中。

方法定义

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_reply_add_video

接口描述

对方请求音频转视频呼叫时,本方选择同意或者拒绝。

注意事项

无。

方法定义

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

是否同意音频转视频呼叫的请求,取值:

  • true:同意
  • false:拒绝

返回值

类型

描述

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_video_control

接口描述

该接口用于控制暂停或继续视频采集。

注意事项

无。

方法定义

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_S_VIDEO_CTRL_INFO*

视频控制参数。

返回值

类型

描述

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_set_video_render

接口描述

该接口用于设置视频显示窗口属性。

注意事项

无。

方法定义

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_S_VIDEO_RENDER_INFO*

视频显示窗口属性。

返回值

类型

描述

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_set_capture_rotation

接口描述

该接口用于设置摄像头采集方向。

注意事项

无。

方法定义

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_set_display_rotation

接口描述

该接口用于设置窗口显示方向。

注意事项

无。

方法定义

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

TSDK_E_VIDEO_WND_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_set_camera_picture

接口描述

该接口用于设置摄像头图片。

注意事项

无。

方法定义

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;
}
 

tsdk_set_svc_video_window

接口描述

设置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_get_call_statistic_info

接口描述

获取呼叫统计信息。

注意事项

无。

方法定义

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_S_CALL_STATISTIC_INFO

呼叫统计信息。

返回值

类型

描述

TSDK_RESULT

成功则返回TSDK_SUCCESS,失败则返回相应错误码。

代码示例

None
 

tsdk_get_devices

接口描述

获取音频视频设备列表。

注意事项

应用程序在任何阶段均可以获取当前可用的音视频设备信息,为更方便地进行后继具体设备管理,建议应用程序在初始化阶段和系统检测到设备变化时,获取设备信息并保存维护。

方法定义

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

TSDK_E_DEVICE_TYPE

设备类型。

  • TSDK_E_DEVICE_MIC:获取麦克风列表
  • TSDK_E_DEVICE_SPEAKER:获取扬声器列表
  • TSDK_E_DEVICE_CAMERA:获取摄像头列表

[in/out] num

TSDK_UINT32 *

输入时表示上层分配的设备个数,输出时表示获取到得设备的个数。

[out] device_info

TSDK_S_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_open_video_preview

接口描述

打开本地预览窗口。

注意事项

该接口一般用于设备设置时,检测本地摄像头工作状态是否正常。

方法定义

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_close_video_preview

接口描述

关闭并删除本地预览窗口。

注意事项

无。

方法定义

TSDK_API TSDK_RESULT tsdk_close_video_preview( TSDK_VOID   )
 

参数描述

无。

返回值

类型

描述

TSDK_RESULT

成功返回TSDK_SUCCESS,失败返回相应错误码。

代码示例

//OC
-(void)stopVideoPreview
{
    tsdk_close_video_preview();
}
 

tsdk_set_mobile_audio_route

接口描述

设置移动音频路由设备。

注意事项

用于移动设备。

方法定义

TSDK_API TSDK_RESULT tsdk_set_mobile_audio_route(IN TSDK_E_MOBILE_AUIDO_ROUTE route);
 

参数描述

参数名

是否必须

类型

描述

[in] route

TSDK_E_MOBILE_AUIDO_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_get_mobile_audio_route

接口描述

获取移动音频路由设备。

注意事项

用于移动设备。

方法定义

TSDK_API TSDK_RESULT tsdk_get_mobile_audio_route(OUT TSDK_E_MOBILE_AUIDO_ROUTE *route);
 

参数描述

参数名

是否必须

类型

描述

[out] route

TSDK_E_MOBILE_AUIDO_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;
}
 

tsdk_start_play_media

接口描述

播放本地音频文件,包括振铃音、回铃音、拨号(提示)音、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_stop_play_media

接口描述

停止音频文件播放。

注意事项

无。

方法定义

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;
}