[*] 配置优化

This commit is contained in:
acgist
2023-07-25 08:50:28 +08:00
parent 4fbfd6a29e
commit d3a0767ec9
7 changed files with 102 additions and 36 deletions

28
taoyao-client-media/.env Normal file
View File

@@ -0,0 +1,28 @@
# 服务名称
NAME=taoyao-client-media
# 终端ID
CLIENT_ID=taoyao-client-media
# 终端名称
CLIENT_NAME=桃夭媒体服务
# 信令版本
SIGNAL_VERSION=1.0.0
# 信令地址
SIGNAL_HOST=127.0.0.1
# 信令端口
SIGNAL_PORT=8888
# 信令帐号
SIGNAL_USERNAME=taoyao
# 信令密码
SIGNAL_PASSWORD=taoyao
# 工作线程数量(生产环境不要配置)
MEDIASOUP_WORKER_SIZE=2
# Mediasoup最小端口
MEDIASOUP_MIN_PORT=40000
# Mediasoup最大端口
MEDIASOUP_MAX_PORT=49999
# Mediasoup监听地址
MEDIASOUP_LISTEN_IP=0.0.0.0
# Mediasoup监听端口起始端口
MEDIASOUP_LISTEN_PORT=44444
# Mediasoup声明地址不能配置环回地址
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -0,0 +1,14 @@
NAME=taoyao-client-media-a
CLIENT_ID=taoyao-client-media-a
CLIENT_NAME=桃夭媒体服务A
SIGNAL_VERSION=1.0.0
SIGNAL_HOST=127.0.0.1
SIGNAL_PORT=8888
SIGNAL_USERNAME=taoyao
SIGNAL_PASSWORD=taoyao
MEDIASOUP_WORKER_SIZE=2
MEDIASOUP_MIN_PORT=40000
MEDIASOUP_MAX_PORT=49999
MEDIASOUP_LISTEN_IP=0.0.0.0
MEDIASOUP_LISTEN_PORT=41111
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -0,0 +1,14 @@
NAME=taoyao-client-media-b
CLIENT_ID=taoyao-client-media-b
CLIENT_NAME=桃夭媒体服务B
SIGNAL_VERSION=1.0.0
SIGNAL_HOST=127.0.0.1
SIGNAL_PORT=8888
SIGNAL_USERNAME=taoyao
SIGNAL_PASSWORD=taoyao
MEDIASOUP_WORKER_SIZE=2
MEDIASOUP_MIN_PORT=40000
MEDIASOUP_MAX_PORT=49999
MEDIASOUP_LISTEN_IP=0.0.0.0
MEDIASOUP_LISTEN_PORT=42222
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -0,0 +1,13 @@
NAME=taoyao-client-media
CLIENT_ID=taoyao-client-media
CLIENT_NAME=桃夭媒体服务
SIGNAL_VERSION=1.0.0
SIGNAL_HOST=127.0.0.1
SIGNAL_PORT=8888
SIGNAL_USERNAME=taoyao
SIGNAL_PASSWORD=taoyao
MEDIASOUP_MIN_PORT=40000
MEDIASOUP_MAX_PORT=49999
MEDIASOUP_LISTEN_IP=0.0.0.0
MEDIASOUP_LISTEN_PORT=44444
MEDIASOUP_ANNOUNCED_IP=192.168.1.110

View File

@@ -7,11 +7,15 @@
"homepage" : "https://gitee.com/acgist/taoyao", "homepage" : "https://gitee.com/acgist/taoyao",
"description": "taoyao client media", "description": "taoyao client media",
"scripts": { "scripts": {
"dev": "node src/Server.js", "dev" : "node src/Server.js",
"prd": "node src/Server.js" "prd" : "cross-env NODE_ENV=prd node src/Server.js",
"node-a": "cross-env NODE_ENV=node-a node src/Server.js",
"node-b": "cross-env NODE_ENV=node-b node src/Server.js"
}, },
"dependencies": { "dependencies": {
"ws" : "^8.12.0", "ws" : "^8.12.0",
"dotenv" : "^16.3.1",
"cross-env": "^7.0.3",
"mediasoup": "^3.11.10" "mediasoup": "^3.11.10"
} }
} }

View File

@@ -1,38 +1,38 @@
const os = require("os"); const os = require("os");
const dotenv = require("dotenv");
/** if(process.env.NODE_ENV) {
* 桃夭媒体服务地址 dotenv.config({ path: `.env.${process.env.NODE_ENV}` });
* 注意这里即使是本机也不能配置127.0.0.1 } else {
*/ dotenv.config({ path: `.env` });
const defaultTaoyaoHost = "192.168.1.110"; }
/** /**
* 配置 * 配置
*/ */
module.exports = { module.exports = {
// 服务名称 // 服务名称
name: "taoyao-client-media", name: process.env.NAME || "taoyao-client-media",
// 信令配置 // 信令配置
signal: { signal: {
// 信令版本 // 信令版本
version : "1.0.0", version : process.env.SIGNAL_VERSION || "1.0.0",
// 终端标识 // 终端ID
clientId : "taoyao-client-media", clientId : process.env.CLIENT_ID || "taoyao-client-media",
// 终端类型 // 终端类型
clientType: "MEDIA", clientType: "MEDIA",
// 终端名称 // 终端名称
name : "桃夭媒体服务", name : process.env.CLIENT_NAME || "桃夭媒体服务",
// 信令地址 // 信令地址
host : "127.0.0.1", host : process.env.SIGNAL_HOST || "127.0.0.1",
// host : "192.168.1.100",
// 信令端口 // 信令端口
port : 8888, port : process.env.SIGNAL_PORT || 8888,
// 信令协议 // 信令协议
scheme : "wss", scheme : "wss",
// 信令帐号 // 信令帐号
username : "taoyao", username : process.env.SIGNAL_USERNAME || "taoyao",
// 信令密码 // 信令密码
password : "taoyao", password : process.env.SIGNAL_PASSWORD || "taoyao",
}, },
// 录像配置 // 录像配置
record: { record: {
@@ -44,7 +44,7 @@ module.exports = {
// Mediasoup // Mediasoup
mediasoup: { mediasoup: {
// Worker数量 // Worker数量
workerSize: Object.keys(os.cpus()).length, workerSize: process.env.MEDIASOUP_WORKER_SIZE || Object.keys(os.cpus()).length,
// Worker配置https://mediasoup.org/documentation/v3/mediasoup/api/#WorkerSettings // Worker配置https://mediasoup.org/documentation/v3/mediasoup/api/#WorkerSettings
workerSettings: { workerSettings: {
// 日志标记 // 日志标记
@@ -64,7 +64,7 @@ module.exports = {
"simulcast", "simulcast",
], ],
// 日志级别debug | warn | error | none // 日志级别debug | warn | error | none
logLevel: "warn", logLevel : "warn",
// RTP端口范围 // RTP端口范围
rtcMinPort: process.env.MEDIASOUP_MIN_PORT || 40000, rtcMinPort: process.env.MEDIASOUP_MIN_PORT || 40000,
rtcMaxPort: process.env.MEDIASOUP_MAX_PORT || 49999, rtcMaxPort: process.env.MEDIASOUP_MAX_PORT || 49999,
@@ -133,15 +133,15 @@ module.exports = {
listenInfos: [ listenInfos: [
{ {
protocol : "udp", protocol : "udp",
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0", ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
port : 44444, port : process.env.MEDIASOUP_LISTEN_PORT || 44444,
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1", announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
}, },
{ {
protocol : "tcp", protocol : "tcp",
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0", ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
port : 44444, port : process.env.MEDIASOUP_LISTEN_PORT || 44444,
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1", announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
}, },
], ],
}, },
@@ -150,7 +150,7 @@ module.exports = {
listenIps: [ listenIps: [
{ {
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0", ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1", announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
}, },
], ],
initialAvailableOutgoingBitrate: 1000000, initialAvailableOutgoingBitrate: 1000000,
@@ -162,16 +162,9 @@ module.exports = {
plainTransportOptions: { plainTransportOptions: {
listenIp: { listenIp: {
ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0", ip : process.env.MEDIASOUP_LISTEN_IP || "0.0.0.0",
announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || defaultTaoyaoHost || "127.0.0.1", announcedIp: process.env.MEDIASOUP_ANNOUNCED_IP || "127.0.0.1",
}, },
maxSctpMessageSize: 262144, maxSctpMessageSize: 262144,
}, },
}, },
}; };
/**
* PipeTransport : RTP(router)
* PlainTransport : RTP
* DirectTransport: NodeJS
* WebRtcTransport: WebRTC
*/

View File

@@ -17,7 +17,7 @@ const taoyao = new Taoyao(mediasoupWorkers);
*/ */
async function buildMediasoupWorkers() { async function buildMediasoupWorkers() {
mediasoup.observer.on("newworker", (worker) => { mediasoup.observer.on("newworker", (worker) => {
console.info("mediasoup newworker", worker); console.info("mediasoup newworker", worker.pid);
}); });
const { workerSize } = config.mediasoup; const { workerSize } = config.mediasoup;
console.info("工作线程数量", workerSize); console.info("工作线程数量", workerSize);
@@ -46,7 +46,7 @@ async function buildMediasoupWorkers() {
// 创建WebRTC服务 // 创建WebRTC服务
const webRtcServerOptions = JSON.parse(JSON.stringify(config.mediasoup.webRtcServerOptions)); const webRtcServerOptions = JSON.parse(JSON.stringify(config.mediasoup.webRtcServerOptions));
for (const listenInfos of webRtcServerOptions.listenInfos) { for (const listenInfos of webRtcServerOptions.listenInfos) {
listenInfos.port = listenInfos.port + mediasoupWorkers.length; listenInfos.port = Number(listenInfos.port) + mediasoupWorkers.length;
} }
const webRtcServer = await worker.createWebRtcServer(webRtcServerOptions); const webRtcServer = await worker.createWebRtcServer(webRtcServerOptions);
// 监听事件 // 监听事件