第10课 实现多对多音视频会议功能

在前两节课,我们将推流端与播放端合并为一对一音视频聊天功能并解决了关键的回声问题,在此基础上,我们可以进一步改进实现多对多的视频会议功能。

1.备份demo9并修改demo9为demo10。

2.打开工程文件,修改mfc为四分屏画面。

界面左下角为推送端界面,包括:摄像头预览区、推流地址文本框和推流按钮,其余三个为播放端界面,包括:拉流预览区、拉流地址文本框和拉流按钮。

3.添加相应功能

推流端代码fmle.cpp基本不用改动,fmlp.cpp及fmlp.h需要微调以适应复用功能。修改主对话框代码使播放端增加到三个并传递相关参数到fmlp内部以作识别用:

myFmlp1 = new fmlp();
myFmlp1->btnID = IDC_playBtn;
myFmlp1->videoID = IDC_remotePIC;
myFmlp1->start(playURL, 640, 480);myFmlp2 = new fmlp();
myFmlp2->btnID = IDC_playBtn2;
myFmlp2->videoID = IDC_remotePIC2;
myFmlp2->start(playURL, 640, 480);myFmlp3 = new fmlp();
myFmlp3->btnID = IDC_playBtn3;
myFmlp3->videoID = IDC_remotePIC3;
myFmlp3->start(playURL, 640, 480);

3.给播放按钮添加相应的控制程序:


void CflashMeetingDlg::OnBnClickedplaybtn()
{myWnd->GetDlgItem(IDC_playURL)->GetWindowText(playURL);if (playURL.GetLength() == 0){MessageBox(L"地址不能为空");return;}if (!myFmlp1->isRunning){myFmlp1->ifConn(playURL, 640, 480);}else{myFmlp1->isRunning = false;myFmlp1->isAuPlaying = false;}}
void CflashMeetingDlg::OnBnClickedplaybtn2()
{myWnd->GetDlgItem(IDC_playURL2)->GetWindowText(playURL2);if (playURL2.GetLength() == 0){MessageBox(L"地址不能为空");return;}if (!myFmlp2->isRunning){myFmlp2->ifConn(playURL2, 640, 480);}else{myFmlp2->isRunning = false;myFmlp2->isAuPlaying = false;}
}void CflashMeetingDlg::OnBnClickedplaybtn3()
{myWnd->GetDlgItem(IDC_playURL3)->GetWindowText(playURL3);if (playURL3.GetLength() == 0){MessageBox(L"地址不能为空");return;}if (!myFmlp3->isRunning){myFmlp3->ifConn(playURL3, 640, 480);}else{myFmlp3->isRunning = false;myFmlp3->isAuPlaying = false;}
}

4.调试运行,效果如下:

在正常情况下,互联网应用延时不会超过500ms,回声抑制效果良好,在此基础上可以进一步完善拓展成一个可商用的视频会议软件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326986.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CUDA并行编程

引入 并行能帮我们提高代码性能,而GPU在硬件上是能够更好地实现一些并行工作的,能够更大程度地并行。 CUDA是SIMT模型,只用写一个程序,其中就包含了CPU部分和GPU并行部分的代码,那么就需要指明哪些是CPU(…

C语言程序设计——数学运算

基本运算符 运算符说明例子赋值运算符a b;、-、*、/、()基本四则运算a (a c) * d;%取余运算符a b % 2&、^、~、l位运算a ~b l c>>、<<左移和右移a b >> 2 在c语言的数学运算中&#xff0c;所涉及到的符号如图所示&#xff0c;在使用过程中应该了…

软件测试面试总结分享

第一轮 自我介绍。根据自己的情况扩展。你是怎么理解软件测试的&#xff1f;我觉得软件测试是很重要的岗位&#xff0c;如果一个系统开发完后不通过测试去产品质量把关&#xff0c;产品不能正常运行可能造成的后果&#xff0c;损失钱财、损失时间、损失客户等等&#xff0c;所…

Leetcode刷题笔记题解(C++):无重复字符的最长子串

思路&#xff1a; 利用滑动窗口的思想&#xff0c;用起始位置startindex和curlength来记录这个滑动窗口的大小&#xff0c;并且得出最长距离&#xff1b;利用哈希表来判断在滑动窗口中是否存在重复字符&#xff0c;代码如下所示&#xff1a; class Solution { public:int len…

MySQL之视图内连接、外连接、子查询案例

目录 一.视图 1.1 含义 1.2 操作 二.案例 三.思维导图 一.视图 1.1 含义 虚拟表&#xff0c;查询方面和普通表一样使用。 1.2 操作 1.创建视图&#xff1a; create or replace view 视图名 as 查询语句&#xff1b; 2.视图的修改&#xff1a; 方式1 create or replace view …

keras,一个超酷的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - keras。 Github地址&#xff1a;https://github.com/keras-team/keras 深度学习已经成为解决各种复杂问题的有力工具&#xff0c;而 Python Keras 是…

小游戏实战丨基于PyGame的俄罗斯方块小游戏

文章目录 写在前面PyGame五子棋注意事项系列文章写在后面 写在前面 本期内容&#xff1a;基于pygame的俄罗斯方块小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700182 实验环境 python3.11及以上pycharmtkinter PyGame Pygame是一个非常…

在 sealos 上使用 redisinsight 完美管理 redis

先起一个 redis 集群&#xff0c;在 sealos 上可以点点鼠标就搞定&#xff1a; 简单两步&#xff0c;redis 集群搞定。 再启动 RedisInsight, 是一个 redis 的可视化管理工具。 就可以看到部署后的地址了。进去之后填写 redis 的链接信息即可&#xff1a; 链接信息在数据库的…

如何建立标准且有效的评审流程?6个重点

为了进一步提高项目质量&#xff0c;项目评审管理需要遵循一定的标准化流程。而建立标准且有效的评审流程&#xff0c;能够快速提高项目质量和效率&#xff0c;优化团队协作&#xff0c;降低风险&#xff0c;提高项目成功率。如果组织没有建立起标准化的评审流程&#xff0c;就…

信息学奥赛之《向量几何一文通》

Geometry π \pi π&#xff1a; arccos ⁡ ( − 1 ) \arccos(-1) arccos(−1)余弦定理&#xff1a;对于任意三角形&#xff08;三边长为 a , b , c a,b,c a,b,c&#xff09;&#xff0c;则有 c 2 a 2 b 2 − 2 a b cos ⁡ θ c^2a^2b^2-2ab\cos_{\theta} c2a2b2−2abcosθ…

基于Spring-boot-websocket的聊天应用开发总结

目录 1.概述 1.1 Websocket 1.2 STOMP 1.3 源码 2.Springboot集成WS 2.1 添加依赖 2.2 ws配置 2.2.1 WebSocketMessageBrokerConfigurer 2.2.2 ChatController 2.2.3 ChatInRoomController 2.2.4 ChatToUserController 2.3 前端聊天配置 2.3.1 index.html和main.j…

OpenSource - File Preview 文件预览组件

文章目录 file-preview-spring-boot-starterkkFileView file-preview-spring-boot-starter https://github.com/wb04307201/file-preview-spring-boot-starter https://gitee.com/wb04307201/file-preview-spring-boot-starter 一个文档在线预览的中间件&#xff0c;可通过简…