互联网点对点音视频
1、互联网点对点音视频说明
1.1、实时音频、实时视频和拨打落地电话均通过相同的接口进行调用
遵循相同的业务流程。不同的业务通过呼叫接口参数CallType进
行区分,VIDEO_CALL视频、VOICE_CALL音频。
1.2、接口逻辑
接口调用是采取异步调用的方式。所有的呼叫相关接口的调用结果通过回调接口ECVoipCallBackInterface中的方法onCallEvents来接受服务端返回的各种状态。
1.3、业务流程
- 客户A呼叫客户B发起请求
- 云通讯服务端收到A请求并把请求转发给B
- 客户B收到请求并应答
- 云通讯服务端收到B应答并转发A
- A收到应答,通话建立。
2、代码示例
音频呼叫
我们假设Tony音频呼叫John,则代码如下:
- char **outCallid;
- outCallid = new char *;
- MakeCall((const char**)outCallid, EC_VOICE_CALL, "John账号");
视频呼叫
我们假设Tony视频呼叫John,此时代码和音频呼叫相同,区别是呼叫类型需要传入VIDEO_CALL,并且在呼叫前需要设置本地和对方的视频view,代码如下:
- SetVideoView( remoteView, localView);
- char **outCallid;
- outCallid = new char *;
- MakeCall((const char**)outCallid, EC_VIDEO_CALL, "John账号");
假设John侧客户端调起来音频或者视频呼入的界面,界面上有“接受”和“拒接”两个按钮;
- John点击“接受”按钮,调用AcceptCall:
- AcceptCall ("来电的callid");
- John点击“拒绝”按钮,音视频拒绝的代码是一致的,调用的代码是:
- ReleaseCall("来电的callid", 175603);
处理回调事件
Tony在呼叫John的过程中,会有若干状态返回,都在回调onCallEvents中处理,其监听的设置已经在sdk初始化的SetVoIPCallBackFuction中设置过。代码示例如下:
- -(void) onCallEvents(const ECVoIPCallMsg * call)
- {
- if( Global::m_pMain )
- {
- Global::m_pMain->MainCallEventsResult(reason, call);
- }}
设置美颜
Tony和John的通话过程中,想设置美颜功能,则都可以调用如下代码:
- SetBeautyFilter (true);
取消设置美颜
Tony和John的通话过程中,想设置美颜功能,则都可以调用如下代码:
- SetBeautyFilter (false);
结束通话
Tony和John的通话过程中,任何一方想结束呼叫,则都可以调用如下代码:
- ReleaseCall("来电的callid", 0);