当前位置: 首页 > news >正文

WebRTC 入门与实战(三)之高级篇

1 STUN/TURN 服务器搭建

1.1 STUN/TURN 服务器选型

rfc5766-turn-servercoTurnResTurn

1.2 coTurn 服务器搭建与布署

下载 coTurn
https://github.com/coturn/coturn./configure --prefix=/usr/local/coturnmake -j 4sudo make install

1.3 coTurn 服务器配置

1.4 启动 coTurn 服务器

ps -ef | grep turn/usr/local/coturn/bin/turnserver -c /usr/local/coturn/etc/turnserver.conf.defaulthttps://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

2 RTCPeerConnection

2.1 基本格式

pc = new RTCPeerConnection([configuration]);

2.2 configuration 可选

2.2.1 bundlePolicy

Balanced: 音频与视频轨使用各自的传输通道
max-compat: 每个轨使用自己的传输通道
max-bundle: 都绑定到同一个传输通道

2.2.2 certificates

授权可以使用连接的一组证书

2.2.3 iceCandidatePoolSize

16位的整数值,用于指定预取的ICE候选者的个数。
如果该值发生变化,它会解发重新收集候选者

2.2.4 iceTransportPolicy

指定ICE传输策略
relay: 只使用中继候选者
all: 可以使用任何类型的候选者

2.2.5 iceServers

其由 RTCIceServer组成。
每个RTCIceServer都是一个ICE代理的服务

2.2.6 rtcpMuxPolicy

该选项在收集ICE候选者的使用

2.3 addIceCandidate

2.3.1 基本格式

aPromise=pc.addIceCandidate(candidate);

2.3.2 candidate

3 真正的音视频传输

3.1 客户端信令消息

join 加入房间leave 离开房间message 端到端消息

3.2 端到端信令消息

Offer 消息Answer 消息Candidate 消息

3.3 服务端信令消息

joined 已加入房间otherjoin 其它用户加入房间full 房间人数已满leaved 已离开房间bye 对方已离开房间

3.4 直播系统消息处理流程

4 信令服务器改造

'use strict'var http = require('http');
var https = require('https');
var fs = require('fs');var express = require('express');
var serveIndex = require('serve-index');var socketIo = require('socket.io');var USERCOUNT = 3;var log4js = require('log4js');
log4js.configure({appenders: {console: {type: 'console'},log: {type: 'file',filename: 'log.log',maxLogSize: 1024,backups: 3,compress: true}},categories: {default: {appenders: ['console', 'log'],level: 'debug'}}
})var logger = log4js.getLogger();var app = express();
app.use(serveIndex('./public'));
app.use(express.static('./public'))var http_sever = http.createServer(app);
http_sever.listen(80, '0.0.0.0');var options = {key: fs.readFileSync('./cert/key.pem'),cert: fs.readFileSync('./cert/cert.pem')
};var https_server = https.createServer(options, app);var io = socketIo.listen(https_server);io.sockets.on('connection', (socket)=> { console.log('connection');socket.on('message', (room, data)=> {socket.to(room).emit('message', room, data);});socket.on('join', (room)=> {socket.join(room);var my_room = io.sockets.adapter.rooms[room];var users = my_room ? Object.keys(my_room.sockets).length:0;logger.debug('the number of user in room is: ' + users);if (users < USERCOUNT){socket.emit('joined', room, socket.id);if (users > 1){socket.to(room).emit('othersjoin', room);}   }else{socket.leave(room);socket.emit('full', room, socket.id);}// socket.emit('joined', room, socket.id);//socket.to(room).emit('joined', room, socket.id); // 除自己之外 所有 人// io.in(room).emit('joined', room, socket.
http://www.dtcms.com/a/457835.html

相关文章:

  • 二:RAG 的 “语义密码”:向量、嵌入模型与 Milvus 向量数据库实操
  • 一元夺宝网站建设企业网站建设方案对比汇报
  • 《道德经》第十二章
  • 点击图片进入网站要怎么做做网站老板嫌弃太丑谁的锅
  • 如何在ubuntu20.04配置动态壁纸和bongoCat
  • 网站建设中外链与内链的技巧三视觉平面设计网
  • 小公司要不要建设网站网页打不开怎么处理
  • p2vr做的网站怎么再次打开163企业邮箱免费版
  • deepseek vs 元宝--人工智能还是人工智障?
  • 【C语言基础详细版】07. 字符串处理函数完全指南
  • 科室建设网站织梦怎么做的网站
  • 科研配色|信仰的颜色—中国红!
  • wordpress建站菜单栏 二级标题免费做问卷的网站好
  • Python print() 函数完整说明
  • 游戏攻略新闻资讯主题模板源码 YK一点资讯模版 Zblog主题模版(源码下载)
  • 计算机网络资源网站建设论文网站空间 推荐
  • 自助建站的平台wordpress 文章循环
  • Photoshop - Photoshop 工具栏(9)裁剪工具
  • 【练】C程序设计-01程序设计和C语言
  • 使用 Gunicorn 部署 FastAPI 应用程序:快速而强大的组合
  • JavaScript是web开发中一种功能强大的编程语言,
  • 网站建设策划实施要素无锡常州网络推广
  • 东莞建外贸网站龙华专业做网站公司
  • 通俗易懂的理解Vue.js
  • 【开题答辩全过程】以 爱心慈善公益网站为例,包含答辩的问题和答案
  • 【云基础】容器管理工具Containerd
  • 大数据毕业设计-基于大数据的BOSS直聘岗位招聘数据可视化分析系统(高分计算机毕业设计选题·定制开发·真正大数据·机器学习毕业设计)
  • 网站开发建设培训网站策划书预期风险
  • aspnet网站模板人人秀h5页面制作软件
  • mysql数据库学习之高级进阶(七)