WEB开发网
开发学院软件开发VC 用微软的实时通信API集成丰富的客户端通信 阅读

用微软的实时通信API集成丰富的客户端通信

 2010-07-15 20:45:25 来源:WEB开发网   
核心提示:创建通信会话当你在RTC中发起一个呼叫之前,你必须创建并且初始化一个会话,用微软的实时通信API集成丰富的客户端通信(4), 然后你可以输入参与者的IP地址来发起一个呼叫,可可能通过属于一个e-mail 地址或者一个电话号码来激活一个会话,应用程序可获得设备的属性并处理改变,应用程序可通过slider控件来显示音量的改

创建通信会话

当你在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);
  }
}

上一页  1 2 3 4 5 6  下一页

Tags:微软 实时 通信

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接