官网提供的demo启动方式
官方提供的mediasoup-demo是由js(信令)+c++(流媒体服务)两部分服务,mediasoup的worker进程是nodejs通过child_process 的spawn()接口启动的
async function runMediasoupWorkers()
{const { numWorkers } = config.mediasoup;logger.info('running %d mediasoup Workers...', numWorkers);for (let i = 0; i < numWorkers; ++i){const worker = await mediasoup.createWorker({dtlsCertificateFile : config.mediasoup.workerSettings.dtlsCertificateFile,dtlsPrivateKeyFile : config.mediasoup.workerSettings.dtlsPrivateKeyFile,logLevel : config.mediasoup.workerSettings.logLevel,logTags : config.mediasoup.workerSettings.logTags,rtcMinPort : Number(config.mediasoup.workerSettings.rtcMinPort),rtcMaxPort : Number(config.mediasoup.workerSettings.rtcMaxPort)});......}}
根据当前机器cpu核数,选择创建几个worker进程
跳转到mediasoup-demo/server/node_modules/mediasoup/src/index.ts
在跳转到mediasoup-demo/server/node_modules/mediasoup/src/Worker.ts
自行启动mediasoup
如果读者仅仅是需要学习mediasoup c++部分,则可以编辑脚本启动mediasoup服务
参考:
vim config.ini
[General]
servercount = 2[Server0]
id = 1
udpport = 52000
ip = 127.0.0.1
vrvmeetingport = 8108[Server1]
id = 2
udpport = 53000
ip = 127.0.0.1
vrvmeetingport = 8108
vim start.sh
#!/bin/bash
ulimit -c unlimited
configFile="./config.ini"
function ReadINIfile()
{Key=$1Section=$2Configfile=$3ReadINI=`awk -F '=' '/\['$Section'\]/{a=1}a==1&&$1~/'$Key'/{print $2;exit}' $Configfile`echo "$ReadINI"
}serverCount=`ReadINIfile "servercount" "General" "$configFile"`
for((i=0; i<serverCount; i++))
doSection="Server""$i"id=`ReadINIfile "id" "$Section" "$configFile" | sed -e 's/^[ \t]*//g'`udpPort=`ReadINIfile "udpport" "$Section" "$configFile" | sed -e 's/^[ \t]*//g'`Ip=`ReadINIfile "ip" "$Section" "$configFile" | sed -e 's/^[ \t]*//g'`Port=`ReadINIfile "port" "$Section" "$configFile" | sed -e 's/^[ \t]*//g'`nohup ./rtcMediaServer $id $vrvmeetingIp $vrvmeetingPort --logLevel=warn --logTag=info --logTag=ice --logTag=dtls --logTag=rtp --logTag=srtp --logTag=rtcp --logTag=rbe --logTag=rtx --rtcIPv4=true --rtcIPv6=false --singlePort=true --getkeyframe=5000 --rtcMinPort=$udpPort --rtcMaxPort=65535 & echo $! >> pid
done
执行sh start.sh
总结
mediasoup启动后会连接信令服务,也就是上述配置的"IP"和"port",因此读者可以单独启动mediasoup,而不是依赖于mediasoup的官网demo,通过nodejs的spawn接口启动。