初来乍到,接触到音视频领域,在这期间参考开源代码和项目代码,用C++做了一个类似QQ的视频聊天Demo,这里将其中开源的视频通讯技术分享给大家。
工具: vs2010,MFC制作界面,网络传输机制(Socket等),
VFW视频采集,FFmpeg编解码器,SDL播放
聊天与文件传输
1. MFC界面
选择做聊天软件,首先要选取一个界面工具,做界面可不是底层的C++语言的强项,传统的有微软的MFC,比较庞大,开源的有QT、DirectUI,做出界面很炫,使用也比较简单。但为配合vs2010,还是选择了MFC这种适合底层语言的界面工程。
话不多说,直接上图:
怎么样,用MFC也可以做出很炫的界面的。以上两个界面,可以理解一个客户端,一个服务端,客户端登录服务器与其连接,然后两者互发消息进行聊天。
该聊天软件的主要功能有:
登录
文字聊天
表情聊天
文件传输
视频聊天
下面介绍几种实用的功能,基础功能大家自己找资料补一下。
2. 编辑框CEdit的使用
在Properties面板上添加一个编辑框(Edit Control),右键点击属性,修改ID,选上multiline、vertical scroll 和Auto Vscroll属性,添加滚动条并且实现自动换行;如果要实现滚动条自动回滚到最下方,可添加如下代码(m_edit为该编辑框的Control变量)
m_edit.LineScroll(m_edit.GetLineCount());
依次创建发送框、接收框,分别为其添加CString型数值变量m_editInput、m_editOutput,创建send按钮,聊天软件要实现的功能是:
(1)发送框输入的内容保存起来,通过网络发送出去
(2)发送框的内容显示到接收框上
参考代码如下:
void CclientDlg::OnBnClickedSendButton()
{
UpdateData(TRUE);
Send(m_editInput); //网络发送函数,需自己实现
m_editOutput = m_editOutput + "\r\n 我:" +m_editInput;