基于webrtc的小型直播教室
github地址 (好用就star哦!): https://github.com/RobbieXie/WebRTC-Classroom
一、 相关技术栈
+ WebRTC - P2P媒体流传输
+ coturn - ICE, STUN, TURN服务器
+ NodeJs + SocketIO - 实现webrtc信令功能与基本IM功能
+ H5 Web API: 视频音频流获取 Navigator, MediaStream, etc.
+ Vue.js - 前端框架
直播间demo:
二、运行步骤
-
安装项目依赖
npm install
-
打包
npm run-script build
-
运行
npm start
-
如果想外网实现直播,需要注意以下两点:
a) 本地获取视频流,需要https域名,或者chrome->设置->信任你的站点 否则navigator.mediaDevices为undifined。
设置方法chrome打开: chrome://flags/#unsafely-treat-insecure-origin-as-secure
b) 服务器部署coturn,保证P2P正确寻址,否则clients间可能因为内网隔离找不到对方。 可以docker一步部署, 具体步骤参见kurento-coturn
docker run --network=host kurento/coturn
三、项目结构
项目中有一些express模板文件没来得及删,下面将核心代码目录结构进行介绍:(本项目编写前推荐观看b站云加老师免费课程,过一遍5个小时,收益匪浅。课程link,课程源码)
- root
- bin
- www #socketio服务
- FrontProjects
- commons
- components
- ClientLists #聊天室人员列表
- MessageList #聊天框实现
- Barrange.js #弹幕简单实现
- Dialog.js #对话框modal框
- components
- Student
- controller #学生相关逻辑
- view
- Teacher
- controller #老师相关逻辑
- view
- net #管理与client的链接
- commons
- public #一些依赖与打包后文件
- vue, socketio, … libs
- pac
- bin