本文介紹如何利用 Microsoft 即時通訊(RTC)API,為 Windows XP 應用程式加入音視訊會議、應用程式共享、白板、點對點聊天及音視訊調校嚮導等功能。RTC API 提供基於 PC 的創新通訊體驗,開發者可快速建置整合式通訊應用。
RTC API 涵蓋即時訊息、音視訊會議、應用程式共享/協作,適用於所有 Windows XP 應用程式。通訊流程:

本文假設讀者熟悉 COM 開發,原始碼可從文首連結取得。範例展示核心功能;其他如 AEC、FEC、頻寬估計、抖動緩衝、AGC、QoS 等特性請參閱《Microsoft Windows RTC Client Media Support》。
需包含 rtccore.h,透過 CoCreateInstance 取得 CLSID_RTCClient,再呼叫 Initialize() 初始化。
hr = CoCreateInstance(CLSID_RTCClient, NULL, CLSCTX_INPROC_SERVER, IID_IRTCClient, (LPVOID*)&m_pClient);
hr = m_pClient->Initialize();
預設啟用所有媒體類型(RTCMT_ALL)。參與者平台效能與可用頻寬決定編解碼器:
put_MaxBitRate、put_TemporalSpatialTradeOff 調整品質。裝置調校:呼叫 InvokeTuningWizard() 顯示攝影機/麥克風調校嚮導。

設定事件過濾器(put_EventFilter),建立事件接收物件(CRTCEvents),註冊 IRTCEventNotification,啟用監聽模式(RTCLM_BOTH 開啟 SIP port 5060 及動態 port)。
long lEventMask = RTCEF_SESSION_STATE_CHANGE | RTCEF_MESSAGING | RTCEF_MEDIA | RTCEF_INTENSITY | RTCEF_CLIENT;
hr = m_pClient->put_EventFilter(lEventMask);
m_pEvents = new CRTCEvents;
hr = m_pEvents->Advise(m_pClient, m_hWnd);
hr = m_pClient->put_ListenForIncomingSessions(RTCLM_BOTH);
事件處理範例:
透過 CreateSession 建立會話,AddParticipant 加入參與者(以 IP 或 SIP URI)。注意:首版僅支援多方電話會議,不支援多方視訊。
hr = m_pClient->CreateSession(enType, NULL, NULL, 0, &pSession);
hr = pSession->AddParticipant(bstrURI, NULL, &m_Participant);
一行程式碼啟動:StartT120Applet(RTCTA_APPSHARING) 或 StartT120Applet(RTCTA_WHITEBOARD)。
關閉所有 T120 應用程式,呼叫 ShutDown()。效能測試(1 GHz PIII / 2.2 GHz P4)顯示:
| 功能 | PIII | P4 |
|---|---|---|
| 純音視訊 | 9% | 22% |
| +應用程式共享 | 10% | 35% |
| +白板 | 12% | 37% |
| +即時訊息 | 12% | 37% |
RTC Client API 讓 Windows XP 下的通訊工具開發變得簡單,現有會議軟體可快速整合豐富功能,統一協議提升互通性。結合 Intel 處理器與 Windows XP,帶給使用者創新體驗。