频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Microsoft实时通信API入门

来源:yesky 作者: 出处:巧巧读书 2006-07-30 进入讨论组

讨论组http://group.qqread.com

实时通信客户端接口

  需要的头文件: 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()方法来调节它们的设置。

Microsoft实时通信API入门(图三)
图2摄像头调节向导

Microsoft实时通信API入门(图四)
图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基础知识入门热门通信技术专区通信技术专题专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章