/*************************************************************/
/*
wallimn原创文章,欢迎转载,转载请保留本文信息。
博客:http://blog.csdn.net/wallimn
邮件:wallimn@sohu.com
*/
/*************************************************************/
关于这个话题,MSDN上有篇很好很全的文章,VC知识库上有篇译文(www.vckbase.com
),想全面了解的朋友可以找来看看。
那个例子功能有点太全,初次接触,会感觉很不好入门。我仔细阅读分析,反复跟踪了几次,才基本摸清脉络。
现在,我把那个例子裁剪、整理一下,形成了一个仅具有语音通信功能的小程序,方便新手入门之用。
把RTC相关的功能,集成整理形成两个类,详细情况请见我的源码。
程序是基于对话框的程序,有MFC基础的人应该很容易看懂。
有几个要点说一下,其它请看源码。
一、初始化
//初始化部分.
if(!(m_pRTCUtil = new RTCUtil(this->m_hWnd))->isIdle()){
::MessageBox(NULL,_T("初始化RTC出错"),_T("错误"),MB_OK);
::PostQuitMessage(0);
}
二、处理一下事件
LRESULT CMyVoiceDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_RTC_EVENT:
OnRTCEvent (message, wParam, lParam);
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
HRESULT CMyVoiceDlg::OnRTCEvent(UINT message, WPARAM wParam, LPARAM lParam){
IDispatch * pDisp = (IDispatch *)lParam;
RTC_EVENT enEvent = (RTC_EVENT)wParam;
HRESULT hr;
switch ( wParam )
{
case RTCE_SESSION_STATE_CHANGE:
{
IRTCSessionStateChangeEvent * pEvent = NULL;
hr = pDisp->QueryInterface( IID_IRTCSessionStateChangeEvent,
(void **)&pEvent );
if (SUCCEEDED(hr))
{
OnRTCSessionStateChangeEvent(pEvent);
SAFE_RELEASE(pEvent);
}
}
break;
}
SAFE_RELEASE(pDisp);
return S_OK;
}
void CMyVoiceDlg::OnRTCSessionStateChangeEvent(IRTCSessionStateChangeEvent *pEvent)
{
//IRTCSession * pSession = NULL;
RTC_SESSION_STATE enState;
HRESULT hr;
// Get the session state
hr = pEvent->get_State(&enState);
if (FAILED(hr))// get_State failed
{
return;
}
// Get a pointer to the current session.
//这个session与呼叫的sessin应该是一个.
IRTCSession* pSession=NULL;
hr = pEvent->get_Session(&pSession);
if (FAILED(hr))// get_Session failed
{
return;
}
m_pRTCUtil->SetSession(pSession);
switch ( enState )
{
//The session has an incoming call.
case RTCSS_INCOMING:
{
CIncomingDlg cDlg;
m_pRTCUtil->DealCommingCall(&cDlg);
}
break;
case RTCSS_CONNECTED ://我的呼叫连接成功
break;
case RTCSS_DISCONNECTED ://对方断开连接
m_pRTCUtil->Terminate();
break;
}
}
三、结束时清理一下
m_pRTCUtil->Terminate(RTCTR_NORMAL);
if(m_pRTCUtil)delete m_pRTCUtil;
以上是程序的大致脉络,具体细节请查看的我源码。源码可以从我的网络硬盘下载:http://wallimn.ys168.com
文件名:MyVoice.rar
/*************************************************************/
/*
wallimn原创文章,欢迎转载,转载请保留本文信息。
博客:http://blog.csdn.net/wallimn
邮件:wallimn@sohu.com
*/
/*************************************************************/
分享到:
相关推荐
RTC(Real-Time Communication)是网络通信领域中的一个重要概念,它主要涉及实时的音频、视频通信以及数据共享等交互式通信服务。在本话题中,我们重点关注的是基于Microsoft RTC Client API实现的视频会议系统。 ...
微软RTC(Real-Time Communication)SDK 1.2是一款由微软公司提供的开发工具包,用于帮助开发者构建实时通信应用。在本文中,我们将深入探讨RTC SDK的相关知识点,包括其功能、应用场景、API接口以及如何利用它来...
RTC API的构建基于WebRTC(Web Real-Time Communication)标准,该标准允许浏览器和其他应用程序之间进行点对点(P2P)音视频通信,无需安装额外插件或软件。微软的RTC API不仅支持WebRTC标准,还与自家的统一通信...
WebRTC(Web Real-Time Communication)是一项实时通信技术,它允许网络应用或站点,在不需要中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。...
在Windows Phone平台上实现实时通讯(Real-time Communication,RTC)是一项技术挑战,但也是非常重要的功能,尤其是在社交应用、在线游戏和协同工作软件中。本示例程序旨在帮助开发者理解和实践如何在Windows Phone...
第三,**Object RTC(Real-Time Communication)**的引入将支持浏览器内的实时通信功能,这意味着用户可以直接在Edge浏览器中进行视频通话或协作,而无需依赖外部应用程序。这对于远程工作、在线教育和社交互动来说...
如果需要将摄像头视频流传输到网络,可以使用RTSP(Real-Time Streaming Protocol)或者WebRTC(Web Real-Time Communication)。RTSP用于服务器推送视频流,而WebRTC则允许浏览器之间进行实时通信,实现P2P视频...
其次,Microsoft Edge浏览器在10547版本中引入了Object RTC(Real-Time Communication)的预览功能。RTC API的集成使得Edge浏览器无需任何插件就能支持实时音频和视频通信。这意味着用户可以直接在浏览器中进行高...
实时通信(Real-Time Communication,RTC)技术用于即时传输数据,包括视频、音频和文本。在.NET(C#)中,可以通过WebSocket协议实现双向通信,提供低延迟、高效率的数据交换。 3. **视频会议组件** - **捕获与...
传统的HTTP协议无法满足低延迟、双向实时通信的需求,因此可能需要采用WebRTC(Web Real-Time Communication)这样的现代浏览器API。WebRTC允许用户在浏览器之间直接进行音视频通信,无需插件或额外的软件安装。 ...
可能使用了WebRTC(Web Real-Time Communication)标准,它允许浏览器之间直接进行音视频通信,无需插件或第三方软件。此外,.NET框架也提供了一些库,如SignalR,用于实现服务器与客户端之间的实时双向通信。 3. *...
对于开发者,Edge浏览器新增了Object RTC(Real-Time Communication)的预览版。这一API使得Edge浏览器可以实现实时音频和视频通信,无需额外的插件支持。开发者可以通过相关链接了解ORTC如何与Skype和Lync for ...
2. **Real-time Communication (RTC)**:项目可能利用WebRTC技术,实现浏览器之间的直接音频流通信,无需服务器中转,保证了低延迟的实时音频混合。 3. **Event-driven编程**:JavaScript的事件驱动模型是实现此类...
RTC(Real-Time Communication)协议族,如RTP(Real-time Transport Protocol)和RTCP(Real-time Transport Control Protocol),常用于实现实时数据传输。同时,ICE(Interactive Connectivity Establishment)和...
【标题】"免费下载WEBIM java pushlet .net php" 涉及的技术和知识点主要围绕着实时通信(Real-time Communication, RTC)领域,尤其是Web即时通讯(Web Instant Messaging, WebIM)的实现,以及涉及到的编程语言和...
描述中提到的“一对一音频网络RTC”是实时通信(Real-Time Communication)的一种形式,主要在Web浏览器之间进行。WebRTC是一种开放标准,允许浏览器之间进行音视频通信,无需用户安装任何插件。项目使用了SignalR作为...
5. **RTC(Real-Time Communication)技术**:RTC包括WebRTC(Web Real-Time Communication),是一种让浏览器支持P2P通信的技术,但这里提到的是C#环境,可能使用的是库如libuv或Ortc等,它们提供类似的功能。...
1. **即时通讯协议**:MSN Messenger 7.0基于实时通讯协议(Real-Time Communication,RTC),允许用户快速建立和维护连接,实现即时消息传递。 2. **音频视频编码**:采用了先进的音频编解码器,如G.729,确保高...