利用空余时间,前后历时5个月,在公司大佬杰哥的指导下,QHTalkJanus终于搞定了。功能很简单,参考Janus的web客户端来做的,主要实现了三部分:1.Janus信令解析—这个用的是开源库WebSocketPP;2.PeerClient—基于WebRTC封装了Publisher和Subscriber;3.UI—当然是Qt啦。各部分之间低耦合,可以独立封装成库。当然小的bug肯定会有,毕竟这只是个Demo,不过比网上那些编都编不过的....,肯定会好很多,而且实现的每一步都记录在了专栏中,方便查阅。

一.开发环境

操作系统:Win10

客户端:
Qt 5.12.2 MSVC2017
websocketpp-0.8.2
openssl_1_1_1l
WebRTC 2021年3月的master分支,如果用最新的源码也是可以的,毕竟用《VS工程转换工具》可用很方便的转成支持realse/debug的VS工程。
json解析没用WebRTC自带的json库,用的是nlohmann json,这个库好用的不得了,之前我的博客也推荐过,详见:推荐一个好用的C++ json库:nlohmann json

服务器:Janus

二.效果

1.登录

这里密码没任何作用,用户名可以随意设置,当然登录前先要配置服务器(PS:服务器建议自己手动搭建一个)
点击顶部的小齿轮就能打开服务器配置窗口了

如果服务器地址错误,或者服务器未启动,会给出提示

2.推流和停止推流

支持麦克风/扬声器音量和静音设置
支持动态切换音视频设备

3.拉流

这里只拉了四路,当然更多路也是支持的

PS:本专栏所有文章均提供源码下载 

原创不易,转载请标明出处:https://blog.csdn.net/caoshangpa/article/details/123193505

WebRTC笔记之二十二:基于WebRTC的视频聊天室—QHTalkGenius相关推荐

  1. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

  2. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

  3. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  4. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  5. 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web渗透的第一步工作,涉及网站信息.域名信息.端口信息.敏感信息及指纹 ...

  6. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

  7. Android开发笔记(一百二十二)循环器视图RecyclerView

    RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView.GridView,以及瀑布流 ...

  8. GUI的演化和python编程——Python学习笔记之二十二

    GUI的演化和python编程--Python学习笔记之二十二 写完了有关长寿的两篇博文,本该去完成哥德尔那个命题六的.对计算机图形界面的好奇,让我把注意力暂时离开那个高度抽象难读的哥德尔,给转到计算 ...

  9. uniapp 学习笔记二十二 购物车页面结构搭建

    uniapp 学习笔记二十二 购物车页面结构搭建 cart.vue <template><view><view class="flex padding" ...

最新文章

  1. Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller
  2. spring开发_Spring+Struts2
  3. linux sshd cpu 过高 问题解决
  4. 解读谷歌事件中的失语症现象
  5. Bellman-Ford算法
  6. linux wifi关闭5g,TP-Link路由器如何关闭5G无线Wi-Fi信号?
  7. 数据类型和运算符_月隐学python第3课
  8. 操作系统(李治军) L8 CPU管理的直观想法
  9. 自己开发的一款基于PagedDataSource的datalist repeater控件,只需要在源程序中添加三行代码,即可实现通用分页
  10. Malta中any函数
  11. python标签打印工具_NiceLabel Designer 2017条码标签打印软件
  12. STM32F407 窗口看门狗 个人笔记
  13. Vitamin-R for Mac(GTD工作效率管理工具)
  14. libevent源码分析系列
  15. 怎么配置mysql数据源_mysql怎么样配置ODBC数据源
  16. 数学建模人口模型及matlab算法解
  17. 【spring mvc】annotation-driven 配置详解
  18. 南京计算机徐宪忠,nakaga
  19. Pigeon服务的注册与发现
  20. 计算机怎么取消u盘启动程序,如何设置电脑启动项的为U盘启动,小编教你如何设置电脑启动项的为U盘启动...

热门文章

  1. ansible控制windows 2019
  2. Linux中软件的安装方式
  3. 从键盘录入一个字符串,统计该串中有大写字母、小写字母、数字各有多少个。比如:Hello12345World大写:2个 小写:8个数字:5个。
  4. python量化策略源码_【Python量化投资】趋向系统指标策略 ADX、DMI指标用于股票池(附源码)...
  5. 千兆路由器怎么设置网速最快_无线路由器要用千兆,你家的网速才能真正上1000兆...
  6. 半小时搭建电子商务网站--opencart
  7. 因果推理概念再细化和梳理
  8. 【Xdclss项目】MyBatis(4.28-c13)
  9. 海豚浏览器这个公司企业文化和工作环境怎么样?适合毕业生加入么?
  10. 高通WLAN稳定和功耗分析--WLAN功率测量