用微软的实时通信API集成丰富的客户端通信
2010-07-15 20:45:25 来源:WEB开发网创建通信会话
当你在RTC中发起一个呼叫之前,你必须创建并且初始化一个会话。 然后你可以输入参与者的IP地址来发起一个呼叫。可可能通过属于一个e-mail 地址或者一个电话号码来激活一个会话。然而,这一功能需要一个SIP注册服务器,对它的讨论超出了本文的范围。参阅MSDN可获得关于SIP注册服务器的更多信息。
RTC目前还不支持多方视频通话,因此应用程序在初始化一个新会话之前,必须保证没有视频会议在进行。在它第一个发布版本中,Windows RTC客户端只支持多方电话会议,并不支持多方音视频会话和视频会议。
为与另一台PC通话,确定RTC会话类型并且使用IRTCSession接口创建一个同类型的会话。下列代码展示了如何创建会话。
HRESULT CAVDConfDlg::MakeCall(RTC_SESSION_TYPE enType, BSTR bstrURI)
{
...
// Create the session
IRTCSession * pSession = NULL;
hr = m_pClient->CreateSession(enType, NULL, NULL, 0, &pSession);
// Add the participant to the session
hr = pSession->AddParticipant(bstrURI, NULL, &m_Participant);
...
return S_OK;
}
处理实时流会话事件
根据不同的会话类型,存在媒体事件、音量事件、即时消息事件和会话状态改变事件。
媒体事件
处理媒体事件需要得到媒体类型、事件类型和原因,然后发送消息给会话窗口。应用程序可以使用get_MediaType()从视频、音频、T120和实时传输协议(RTP)事件中接收消息。例子程序展示了如何获得媒体事件并将其发送给媒体对话框去处理。
void CAVDConfDlg::OnRTCMediaEvent(IRTCMediaEvent *pEvent)
{
...
hr = pEvent->get_MediaType(&lMediaType);
hr = pEvent->get_EventType(&enType);
hr = pEvent->get_EventReason(&enReason);
if ((m_AVDlg) && (m_AVDlg.GetState () != RTCSS_IDLE))
{
// Deliver the media state to the session window
m_AVDlg.DeliverMedia(lMediaType, enType, enReason);
}
}
音量事件
当扬声器或者麦克风的音量水平发生变化时产生音量事件。应用程序可使用get_Direction()函数获得发生改变的音频设备。一旦确定了设备,应用程序可获得设备的属性并处理改变。应用程序可通过slider控件来显示音量的改变,或者显示给用户一个音量表。
void CAVDConfDlg::OnRTCIntensityEvent(IRTCIntensityEvent *pEvent)
{
...
hr = pEvent->get_Direction(&enDevice);
hr = pEvent->get_Level(&lLevel);
hr = pEvent->get_Min(&lMin);
hr = pEvent->get_Max(&lMax);
if (m_AVDlg.GetState () != RTCSS_IDLE)
{
// Deliver the intensity state to the session window
m_AVDlg.DeliverIntensity(enDevice, lLevel);
}
}
- ››微软PowerPoint 2013细节功能介绍
- ››微软Bing Tranalator将支持雅虎Babel Fish用户
- ››微软关于Windows 7 SP1安装的建议
- ››微软应延长Windows XP寿命的10大理由
- ››微软Windows 7 SP1 RC 官方已经提供下载
- ››微软也为谷歌的Android系统制作应用程序
- ››微软发布超级计算机版Excel测试版本
- ››微软推出Windows 7自动升级程序
- ››微软证实不会在欧洲市场发布Win7无浏览器版
- ››微软将允许PowerPoint和Excel文件嵌入网页
- ››微软发8月补丁修9大漏洞 DLL劫持漏洞未修复
- ››微软称:Android 隐形成本巨大
更多精彩
赞助商链接