main
鲁誉程 5 months ago
parent 67317d8918
commit af403afb01

4
.gitignore vendored

@ -1,9 +1,9 @@
node_modules/
/server/config.*
# /server/config.*
!/server/config.example.js
/server/public/
/server/certs/
# /server/certs/
/server/mediasoup_valgrind_*
/.vscode/

@ -0,0 +1,16 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICijCCAXICAQAwRTELMAkGA1UEBhMCY24xEzARBgNVBAgMClNvbWUtU3RhdGUx
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAKNYRJ97bWmNrlCAuGzRXY/FHmqgKkC+fLgP3jjk
YH91D8HQ64d8aF2qBqswgocsNrCxrrhQdGZPiyJZUbONxJIzw8pT/GnpnqyFNrv/
sB8Mwwm/EnZtC9K63Z4PP6pyjaKrIYR3iLtCoWcrk9uBcK4cg3WdSkc8pNSxC+fH
HJrUBkEyDcyTsRiJyH3vCBMHW6DMnriYoFPyUXv4NS6ACdh/aL7Ztd2Kxzp8yOyI
TKuqij5JcHx6m5o+YMCccFBb4rgdqab9TeS5mrEGdMjtXmSNcPqVlbI3z1sadFNU
9nFo5M+P16gJg1+owKnHrLccKhrrNHF9bGP3MqBpXeAbVMcCAwEAAaAAMA0GCSqG
SIb3DQEBCwUAA4IBAQBuzhDv1RZKf/TFHJdz8WtK3ERO4uysvbwuAFqkVK9naRX+
LtN6bbfi/DnDoewnAp3YHKLZ/mGJNcjUtmmQBTeA99y42ilTWmnuqCd2rZueOz59
1WR2+aF9kZRY2/KkNAKh3DZEV79wdRDGa24J6c6QLiEFR/xr/rgVE6fZDx/+hbUC
Vbazl/mFYj9rEwb41UdaROYcWq1rtcEGYODqDxIku2F9PqJjqhxskRK2Z2ZnQRBN
2arr7JLnYg615zxYsZlnHs+WIkIuWZUdTOC8vmoe8QK3WhVqosQQAEFmm9at2Uqp
Kelwz72fgcJ8Q9NEZUgjJ0oA2B2nQZ1zefvXBAeu
-----END CERTIFICATE REQUEST-----

@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDOTCCAiGgAwIBAgIUWucupnHeoLvK7/kdzCDEN7/YalMwDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCY24xEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDA5MDYwNjUxMjNaFw0yNDEw
MDYwNjUxMjNaMEUxCzAJBgNVBAYTAmNuMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCjWESfe21pja5QgLhs0V2PxR5qoCpAvny4D9445GB/
dQ/B0OuHfGhdqgarMIKHLDawsa64UHRmT4siWVGzjcSSM8PKU/xp6Z6shTa7/7Af
DMMJvxJ2bQvSut2eDz+qco2iqyGEd4i7QqFnK5PbgXCuHIN1nUpHPKTUsQvnxxya
1AZBMg3Mk7EYich97wgTB1ugzJ64mKBT8lF7+DUugAnYf2i+2bXdisc6fMjsiEyr
qoo+SXB8epuaPmDAnHBQW+K4Hamm/U3kuZqxBnTI7V5kjXD6lZWyN89bGnRTVPZx
aOTPj9eoCYNfqMCpx6y3HCoa6zRxfWxj9zKgaV3gG1THAgMBAAGjITAfMB0GA1Ud
DgQWBBQSCOzW2++fMyu3K8Vj2MIvSaqt9TANBgkqhkiG9w0BAQsFAAOCAQEAQPF1
BgqY0e/Rz4w/mJheybVnPFQJJ7M1VhH6bfc5AI68ZZsNjjCyvfbJSxtSaVAgatkD
ZAmAfCEHDNZfVB1QOwPIK1SR0sfShjqHfkDEoHIKXyDb+t1dMdGOToGA/TG04Ax6
+j7NTWlFGO2E/WS31vDtHPiz0kMiFxGTxPsQYtuRvXE9hb3+kjGX3JEiIy/0h10O
SVLbOIQhOG34CLIR5LSCQkiXeWjeu9FLwFr60j3PYmUc2Lwj1OUxug+reTwCLzGM
SYwnUvIDF9QlIc1pwMfVp0wVVga/OYbpVbvO9QOFUQv7ziO6fsQrR6tQqK0UZ0sc
XCWDYfvrI+yqp5QUYg==
-----END CERTIFICATE-----

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCjWESfe21pja5Q
gLhs0V2PxR5qoCpAvny4D9445GB/dQ/B0OuHfGhdqgarMIKHLDawsa64UHRmT4si
WVGzjcSSM8PKU/xp6Z6shTa7/7AfDMMJvxJ2bQvSut2eDz+qco2iqyGEd4i7QqFn
K5PbgXCuHIN1nUpHPKTUsQvnxxya1AZBMg3Mk7EYich97wgTB1ugzJ64mKBT8lF7
+DUugAnYf2i+2bXdisc6fMjsiEyrqoo+SXB8epuaPmDAnHBQW+K4Hamm/U3kuZqx
BnTI7V5kjXD6lZWyN89bGnRTVPZxaOTPj9eoCYNfqMCpx6y3HCoa6zRxfWxj9zKg
aV3gG1THAgMBAAECggEACdGDyR+pg09pi5vmeglZBGFRjhCJOacO5slyuXIQ0th9
1U/yOGH5Vq1NBVE/J1I4X1qZfqlnYGxQ7VmibZaMmvUoRFXUCvxooJoeoMz3uzC7
MITJs/tOBfaxh49ca6nDFboPo7TDr+3gtyDexweldvHD0ngH6kxHjs6tloWuFH2o
IWUpk1tQWWCGL8mNoYPjpkOVSQp9oU5s6ZrLqfY0smeTy4vv1/xXVB8UC6r5HBDc
cf6urspf72ucCjEMG8+y9s3RCTb/Vw02LVsZGF4N6DibI37NwRojIjN1yQG1hvgS
P2zOKMmcoahOXt7bI17tsTTIDSObDl/F6qRDOrTXkQKBgQDfmS7+ZjUNS//JUHE0
PkXlYr8Vgbp6jMrwVJiwWHmPIyJOW+NvLTVXPgcasqRM8A8LLGh4MI5hfI6dc7R6
1sQ9LUnPzTPN2UTND1VokF8Tt4MHhs9Kg+Ujb4gjunIi+I/O9t7Fxx6IQB2jRhat
COo7Id3AmTzMLPjdkygpuuMz8wKBgQC7A9xlRvIL3GzpXZkHfX1TGM0OZO96Dkmt
fP/zb4egwBcUNHMhpuukYLpLZkZLF4rTqzcCmTrxQjzyXOiW1+uwCYrGM40+fiRF
bZ7HdSJl0nBk8KMp3wET4A1a69cuPAwr7lQUrYHqUVkeDKkzLXnTPKZu/2VlH18Z
PPFHnxWU3QKBgA6ktZMrlmXciE/i2McXHPS81s7NxCyqc8/xel5yLOPW5TREiEyL
pWalRUnWUTRItHOC4QSeCXUQ9zYQkc1Jq2hmQuM9CRt+Eydqzakfa1qbNhWUGpdC
tAryDvRoDXmE1cY0HLrPI4zAxjAfMvT6FHzy5tbqMjUc7N9197dj6eVJAoGANxpG
IBktTE1gUcpgQpK5EHjoQmt/HCmFj/aau7GK9tRieHOT0MCMAdz2Ry0VXR7Mqt1x
0fQwJ9Hqf0bcyUVJjo7hMtERtu4X5dUMyZw7zGCa+ULl8HpiqOaFSNrghiDvPSp1
37nX46Cgb3gvioLFuHXQXDgoOglqTddlCENZaokCgYBg6Pm3+5LlXvnspXCOtKJK
m5LQ5BVehA+A/u03Kv08CklvxM/CnXYuCj4X34IM16Ek6mpU0c20U5bx2O/aiztk
rOlRnyuHc3+BAldq2oSgW3u21NrX8YFDwovzZhkiuVCEoYS/EndOCdPIwrdI0S/Q
yAGgNQYMOiO+hJEZBsVHGA==
-----END PRIVATE KEY-----

@ -0,0 +1,194 @@
/**
* IMPORTANT (PLEASE READ THIS):
*
* This is not the "configuration file" of mediasoup. This is the configuration
* file of the mediasoup-demo app. mediasoup itself is a server-side library, it
* does not read any "configuration file". Instead it exposes an API. This demo
* application just reads settings from this file (once copied to config.js) and
* calls the mediasoup API with those settings when appropriate.
*/
const os = require('os');
module.exports =
{
// Listening hostname (just for `gulp live` task).
domain : process.env.DOMAIN || 'localhost',
// Signaling settings (protoo WebSocket server and HTTP API server).
https :
{
listenIp : '192.168.0.167', // 换成你的IP地址
// NOTE: Don't change listenPort (client app assumes 4443).
listenPort : process.env.PROTOO_LISTEN_PORT || 4443,
// NOTE: Set your own valid certificate files.
tls :
{
cert : process.env.HTTPS_CERT_FULLCHAIN || `${__dirname}/certs/fullchain.pem`,
key : process.env.HTTPS_CERT_PRIVKEY || `${__dirname}/certs/privkey.pem`
}
},
// mediasoup settings.
mediasoup :
{
// Number of mediasoup workers to launch.
numWorkers : Object.keys(os.cpus()).length,
// mediasoup WorkerSettings.
// See https://mediasoup.org/documentation/v3/mediasoup/api/#WorkerSettings
workerSettings :
{
dtlsCertificateFile : process.env.WORKER_CERT_FULLCHAIN,
dtlsPrivateKeyFile : process.env.WORKER_CERT_PRIVKEY,
logLevel : 'warn',
logTags :
[
'info',
'ice',
'dtls',
'rtp',
'srtp',
'rtcp',
'rtx',
'bwe',
'score',
'simulcast',
'svc',
'sctp'
],
disableLiburing: false
},
// mediasoup Router options.
// See https://mediasoup.org/documentation/v3/mediasoup/api/#RouterOptions
routerOptions :
{
mediaCodecs :
[
{
kind : 'audio',
mimeType : 'audio/opus',
clockRate : 48000,
channels : 2
},
{
kind : 'video',
mimeType : 'video/VP8',
clockRate : 90000,
parameters :
{
'x-google-start-bitrate' : 1000
}
},
{
kind : 'video',
mimeType : 'video/VP9',
clockRate : 90000,
parameters :
{
'profile-id' : 2,
'x-google-start-bitrate' : 1000
}
},
{
kind : 'video',
mimeType : 'video/h264',
clockRate : 90000,
parameters :
{
'packetization-mode' : 1,
'profile-level-id' : '4d0032',
'level-asymmetry-allowed' : 1,
'x-google-start-bitrate' : 1000
}
},
{
kind : 'video',
mimeType : 'video/h264',
clockRate : 90000,
parameters :
{
'packetization-mode' : 1,
'profile-level-id' : '42e01f',
'level-asymmetry-allowed' : 1,
'x-google-start-bitrate' : 1000
}
}
]
},
// mediasoup WebRtcServer options for WebRTC endpoints (mediasoup-client,
// libmediasoupclient).
// See https://mediasoup.org/documentation/v3/mediasoup/api/#WebRtcServerOptions
// NOTE: mediasoup-demo/server/lib/Room.js will increase this port for
// each mediasoup Worker since each Worker is a separate process.
webRtcServerOptions :
{
listenInfos :
[
{
protocol : 'udp',
ip : process.env.MEDIASOUP_LISTEN_IP || '192.168.0.167', // 换成你的IP地址
announcedAddress : process.env.MEDIASOUP_ANNOUNCED_IP,
port : 44444
},
{
protocol : 'tcp',
ip : process.env.MEDIASOUP_LISTEN_IP || '192.168.0.167', // 换成你的IP地址
announcedAddress : process.env.MEDIASOUP_ANNOUNCED_IP,
port : 44444
}
]
},
// mediasoup WebRtcTransport options for WebRTC endpoints (mediasoup-client,
// libmediasoupclient).
// See https://mediasoup.org/documentation/v3/mediasoup/api/#WebRtcTransportOptions
webRtcTransportOptions :
{
// listenInfos is not needed since webRtcServer is used.
// However passing MEDIASOUP_USE_WEBRTC_SERVER=false will change it.
listenInfos :
[
{
protocol : 'udp',
ip : process.env.MEDIASOUP_LISTEN_IP || '192.168.0.167', // 换成你的IP地址
announcedAddress : process.env.MEDIASOUP_ANNOUNCED_IP,
portRange :
{
min : process.env.MEDIASOUP_MIN_PORT || 40000,
max : process.env.MEDIASOUP_MAX_PORT || 49999,
}
},
{
protocol : 'tcp',
ip : process.env.MEDIASOUP_LISTEN_IP || '192.168.0.167', // 换成你的IP地址
announcedAddress : process.env.MEDIASOUP_ANNOUNCED_IP,
portRange :
{
min : process.env.MEDIASOUP_MIN_PORT || 40000,
max : process.env.MEDIASOUP_MAX_PORT || 49999,
}
}
],
initialAvailableOutgoingBitrate : 1000000,
minimumAvailableOutgoingBitrate : 600000,
maxSctpMessageSize : 262144,
// Additional options that are not part of WebRtcTransportOptions.
maxIncomingBitrate : 1500000
},
// mediasoup PlainTransport options for legacy RTP endpoints (FFmpeg,
// GStreamer).
// See https://mediasoup.org/documentation/v3/mediasoup/api/#PlainTransportOptions
plainTransportOptions :
{
listenInfo :
{
protocol : 'udp',
ip : process.env.MEDIASOUP_LISTEN_IP || '192.168.0.167', // 换成你的IP地址
announcedAddress : process.env.MEDIASOUP_ANNOUNCED_IP,
portRange :
{
min : process.env.MEDIASOUP_MIN_PORT || 40000,
max : process.env.MEDIASOUP_MAX_PORT || 49999,
}
},
maxSctpMessageSize : 262144
}
}
};
Loading…
Cancel
Save