基于webrtc的一对多音视频通讯

本次实验使用windows平台,其他平台如html5、android、ios、linux、mac等思路大同小异,上一篇文章已经提及,在此不再赘述。


一对多首先这个多怎么来的?先看下流程图

这里写图片描述

  • 可以看得出来PeerConnectionFactory的重要性,` Factory是工厂,工厂可以生产很多很多的PeerConnection
  • 摄像头、麦克风这些设备只能是进程独占方式的,所有只有一个,然后多个PeerConnection共享使用LocalMediaStream
    有了上面这些东西就给我们的一对多打下了基础。

一对多这个对是怎么实现的呢?还是看看图吧

这里写图片描述

  • 一定要注意红色的箭头,这个代表你刚才创建的PeerConnecton,而且是有方向性的。

上一篇已经实现了一对一的音视频,在此只需要多次实现即可。

附上效果图
这里写图片描述

**注意:**长得丑没法见人。

还是谈谈本次实例的意义吧,这个可是实际应用中的重点

这里写图片描述

  • 一对多的最简单应用就是QQ的音视频,想象一下你可以使用QQ与多位好友同时进行音视频通话。
  • 可以作为转发服务器。一个网友做那种视频app的(一个姑娘在上面唱歌,下面一群男淫献花鼓掌等等),如果要求实时性,那么就需要转发,原理就是上图所示的那种;不过webrtc的PeerConnectionFactory每创建一个peerconnection都需要消耗5m的内存,如果连接数过多cpu就会占用很多,可能是我的使用有问题,下一步会考虑优化,毕竟1:1000甚至更多人的实时传输消耗很大的内存、cpu和带宽,尤其是带宽。
  • 如果是p2p的话,不要求实时性,那就很有吸引力啦,每个用户作为接受者的同时又可以作为发送者,节省了资源的消耗和成本,无非就是最底层的人会有延时。

展望:

  • 要做的还有很多,接下拉我会先实现音视频的转发,这样加上前两篇文章就可以实现p2p模式的流媒体播放咯,千人视频不是梦!!哇咔咔

demo下载地址

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐