实时通信客户端接口
需要的头文件: rtccore.h
增强功能的应用程序获得带有使用CLSID_RTCClient(GUID={7a42ea29-a2b7-40c4-b091-f6f024aa89be})的CoCreateInstance()的实时通信客户端接口。 一旦这个接口可用,Initialize()这个COM对象来判断这个平台的通信会话性能。
| //初始化RTC COM对象 hr = CoCreateInstance (CLSID_RTCClient, NULL, CLSCTX_INPROC_SERVER, IID_IRTCClient, (LPVOID *)&m_pClient); //初始化客户端接口 hr = m_pClient->Initialize(); |
选择通信类型
下一步是选择偏爱的通信和相关设备(摄像头和麦克风)的类型。 缺省设置情况是能使用所有的通信类型。 如果通信会话的参与者能够共享应用程序、传递即时消息、声音的和视频,这些性能都能够自动的可用。 如果一个参与者不支持某种特定的通信类型,那么对于所有的会话参与者来说,这种通信类型也是不可用的。
| m_pClient->SetPreferredMediaTypes ( RTCMT_ALL, VARIANT_TRUE ); |
会话参与者的平台性能和可用带宽决定了使用何种音频与视频编解码器。
· 视频. Windows实时通信客户端在 1/4CIF图象格式(176×144)分辨率下支持H.261和H.263编解码器。这些可变比特率编解码器发送界于6- 125 Kbps的视频数据。 使用IRTCClient接口方法put_MaxBitRate和put_TemporalSpatialTradeOff可能影响目标的视频转换的空间时间分辨率。
· 音频. Windows实时通信客户端支持许多种音频编解码器。 音频编解码器是基于终端的连接质量而定的。 下面的表格列出了支持的音频编解码器。
| 编解码器 | 采样率 (kHz) | 比特率 (Kbps) | 帧尺寸 (msec) |
| G.711 | 8 | 64 | 20 |
| G.722.1 | 16 | 24 | 20 |
| G.723 | 8 | 6.4 | 30, 60, 或 90 |
| GSM | 8 | 13 | 20 |
| DVI4 | 8 | 32 | 20 |
| SIREN | 16 | 16 | 20, 或40 |
调整通信设备
选择了通信类型和相关的设备后,就可以调整这些通信设备了。实时通信应用程序接口提供了一个向导,以便更好的调节摄像头和麦克风。 使用RTCClient接口的InvokeTuningWizard()方法来调节它们的设置。

图2摄像头调节向导

图3麦克风调节向导
初始化一个会话
在应用程序能够与其它参与者连接之前,它必须能够处理在会话期间实时通信fire off的事件。 在PC到PC的通信中,应用程序捕获即时消息、音量强度、媒体、客户端消息和会话状态改变等事件。 下面的代码说明了如何只创建一个事件过滤器来捕获特定的RTC事件类型。
lEventMask设置了应用程序感兴趣的一组事件。 (如果想要得到一个完整的事件列表,请在MSDN网站上搜索RTC_EVENT以便取得每个事件的详细信息。) CRTCEvents类为附属的客户端发送事件。 RTCEvents对象在应用程序和IRTCEventNotification接口之间创建一个接口。 所有的实时通信事件将由RTCEvents类处理。
| //设置事件过滤器来监听RTC事件 //使用RTCEF_ALL监听所有的事件 //对于样例应用程序,我们将说明如何为一个有限的事件集设置事件监听者。 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 ); // Set the listen mode for RTC client // RTCLM_BOTH opens the standard SIP port 5060, as well as // a dynamic port. hr = m_pClient->put_ListenForIncomingSessions(RTCLM_BOTH); |
在一个会话期间,音频与视频媒体类型可以被添加也可以被删除,所以客户端必须监听这些事件类型。请参阅本文"处理实时流会话事件"部分获取关于状态改变和事件处理的内容。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Solaris基础知识入门 (4642篇文章)
- 热门通信技术专区 (2016篇文章)
- 通信技术专题 (2016篇文章)
- 程序员如何保证代码正确 (3次浏览)
- 配置管理变更的关键路径 (1次浏览)
- 关于tomcat配置文件 (0次浏览)
- 构架SOA应用的10条原则 (0次浏览)
- 访IBM副总裁:飞向SOA (0次浏览)
- 发挥 Tomcat 在 Geronimo 中强大功能 (0次浏览)
- 处理OpenOffice.org基于XML的文档格式 (0次浏览)
- XFire:轻松简单地开发Web Services (0次浏览)
- Windows或开源:企业级OS之争趋势如何? (0次浏览)
- 浅析软件项目进度管理中的积习流弊 (0次浏览)



