视频会议方案
要实现视频会议的前端方案,你可以使用一些现成的视频会议平台提供的前端 SDK 或 API,也可以基于开源的 WebRTC 技术自行开发。以下是两种常见的前端方案:
-
使用现成的视频会议平台:
Zoom SDK:Zoom 提供了丰富的开发工具和 SDK,可以集成到你的应用程序中,让用户直接在你的应用内进行视频会议。
Microsoft Teams SDK:Microsoft Teams 也提供了 SDK,允许你将 Teams 的视频会议功能嵌入到你的应用程序中。
Google Meet API:Google Meet 提供了 API,允许你集成 Google Meet 的视频会议功能到你的应用中。 -
使用 WebRTC 技术自行开发:
WebRTC 库:WebRTC 是一个开源项目,提供了用于实时通信的 JavaScript API。你可以使用它来开发自己的视频会议应用,从而完全控制用户体验和功能。
WebRTC 基础设施:除了使用 WebRTC 库之外,你还需要建立自己的信令服务器和 TURN 服务器来处理连接建立和 NAT 穿透等问题。
视频会议流程
- 正常会议
- 会前页
- 手机号验证
- 询问麦克风、摄像头权限
- 会议信息展示
- 正常状态
- 未开始(禁止入会)
- 会议中(可以入会)
- 会议锁定(需要联系会议主持人入会)
- 异常状态
- 会议人满(需要联系会议主持人入会)
- 会议结束
- 会议取消
- 正常状态
- 调用sdk初始化
- 状态验证
- 设置入会后的摄像头、麦克风状态
- 设备调试
- 设备摄像头 麦克风 扬声器 选择
- 视频数字码(随机6位)验证
- 入会页
- 顶部会议信息
- 会议开始时间
- 会议主题
- 会议链接
- 会议码
- 左侧用户列表
- 底部工具栏
- 布局切换
- 摄像头开关
- 麦克风开关
- 屏幕共享
- 邀请入会
- 退出会议
- 主视口
- 展示视频窗口
- 画中画模式
- 画廊模式
- 展示视频窗口
- 顶部会议信息
- 会前页
- hr招聘页
- 会前页
- 岗位信息
- 面试官信息
- 参会人信息
- 入会页
- 问题展示编辑区域
- 会前页
布局模式
视频会议中常见的两种布局模式是画廊模式和画中画模式:
-
画廊模式:
在画廊模式下,会议的所有参与者的视频画面以小格子的形式排列在屏幕上,每个人的视频画面大小相同,可以一次性看到多个参与者的画面。
这种模式适合于小型团队或者小型会议,可以让所有参与者的面孔都能被看到,并促进更加活跃的讨论和互动。 -
画中画模式:
在画中画模式下,屏幕上会有一个主要的视频画面,通常是当前发言者或者主持人的画面,而其他参与者的视频画面则以小画面的形式显示在主画面的某个角落。
这种模式适合于大型会议或者主持人需要突出展示的场景,可以让所有参与者都能看到主要的内容,并在需要时切换到其他参与者的画面。
通常视频会议软件会提供这两种模式的切换功能,用户可以根据自己的需求选择合适的模式。
WebRTC
WebRTC(Web Real-Time Communication)是一个开放项目,旨在使浏览器和移动应用能够通过简单的 JavaScript API 进行实时通信。它包括了音视频处理、即时通讯、P2P 连接以及 TURN 中转等功能。
- 音视频处理:
WebRTC 提供了丰富的 API,用于音视频的采集、编解码、处理和渲染。它支持多种音视频格式和编解码器,包括 Opus、VP8、VP9、H.264 等,以及音频处理功能如回音消除、降噪、自动增益控制等。这些功能使开发者能够在浏览器中实现高质量的音视频通信。
- 即时通讯:
WebRTC 不仅限于音视频通话,还可以用于实现即时通讯功能,如文字聊天、文件传输等。开发者可以利用 WebRTC 提供的数据通道(Data Channel)API 在浏览器之间传输任意数据,从简单的文本消息到大文件传输都可以实现。
- 音视频实时互动:
WebRTC 的核心功能之一是实现音视频的实时互动。通过使用 PeerConnection API,浏览器可以直接建立对等连接,实现端到端的音视频传输,从而实现实时通话和视频会议等功能。
- 内网连接 P2P 传输和 TURN 中转:
在进行音视频通信时,可能会遇到防火墙、NAT 等网络限制,导致直接 P2P 通信失败。WebRTC 使用 ICE(Interactive Connectivity Establishment)协议来解决这些问题,它会尝试建立直接的对等连接(P2P),但如果失败,则会自动转向使用 TURN 服务器进行中转,确保通信的顺利进行。
总之,WebRTC 提供了丰富的功能和灵活的 API,使开发者能够在 Web 应用和移动应用中实现高质量、实时的音视频通信和即时通讯功能,而且可以应对不同网络环境下的挑战。
webRtc
- 音频 视频 传输 三个模块
- 音频
- 编解码
- netEq
- 回音消除
- 降噪
- 视频
- vp8 h.264
- jitter buffer 防抖动
- 美颜,p图,人脸识别
- 传输
- SRTP 安全
- 线路检测,抖动,带宽
- p2p( stun + turn + ice)
webRtc源码目录结构
- api
- call 数据流
- video
- audio
- common_audio
- common_video
- media 多媒体逻辑处理,编辑码
- logging
- module 重要,子模块
- audio_coding 音视频编解码
- audio_mixer 混音
- pc Peer Connection 流 连接相关的逻辑层
- p2p 端对端
- rtc_base 锁,线程
- rtc_tool 音视频分析
- tool_webrtc 测试
- system_wrappers 系统操作
- stats 数据统计
- sdk
运行机制
- 轨 与 流
- track
- mediaStream