本课对应源文件下载链接:
https://download.csdn.net/download/XiBuQiuChong/88805307
多对多视频会议体验版下载链接:https://download.csdn.net/download/XiBuQiuChong/88805337
在《第8课 利用FFmpeg将摄像头画面与麦克风数据合成后推送到rtmp服务器》,我们实现了一个推流端,可以把音视频推送到rtmp服务器;在《第3课 使用FFmpeg读取rtmp流并显示视频及播放音频.docx》,我们实现了一个播放器,可以正常播放rtmp音视频流。聪明的你应该可以想到了:把推流端和播放端合并在一起,就是一个最简单的一对一的音视频聊天系统。
一、最终实现的效果
二、一对一的音视频聊天系统的原理
如前所述,其实就是一个推流端加一个播放端,只不过把它们两个放到了同一个程序中的同一个界面中。
三、一对一的音视频聊天系统的具体实现
1.备份推流端demo8并修改demo8为demo9。
2.调整主对话框尺寸,在主对话框中参考第3课源文件添加名为IDC_playPic的Picture Control控件。
3.复制demo3中的fmlp.h和fmlp.cpp到demo9工程目录下,与fmle.h和fmle.cpp保持在同一目录。
4.将fmlp.h和fmlp.cpp导入到demo9解决方案中。
3.复制第3课工程主对话的drawMatOfPlay定义和方法到当前工程,并在当前工程主对话框中添加以下代码以使播放端工作:
fmle *myFmle = new fmle();
fmlp *myFmlp = new fmlp();
4.修改fmle.cpp中的推流地址和fmlp.cpp中的播放地址使二者保持一致,如均为"rtmp://192.168.0.100/live/01";
5.调试运行,推流端能正常捕获摄像头图像并预览,播放端可以正常播放摄像头画面并听到声音则大功告成。
四、功能拓展
在实际应用中,通常借助socket服务器维持一个在线列表一实现一对多的视频会议系统,甚至可以在此基础上加上文本聊天、桌面共享、共享白板等功能,这些就需要大家在后续的学习过程中逐步完善了。