win 10下mediasoup構築過程のいくつかのピット記録
7520 ワード
私达はもとはJanusのwebrtcシステムに基づいて基本的に利用することができて、システムは今最高で5万人まで同时にオンラインになって、しかし确かにJanusのいくつか不足を発见して、私のこのようなc++が好きな人にとって、Janusのコードを见るのは本当に苦痛で、そこで研究の目的にあって、Medooze、Mediasoupなどを研究して、比較するとMedoozeサービス側はwindowsプラットフォームをサポートしていません(私のいくつかの原因でwindowsの下で構築する必要があります)、Mediasoupのフレームワークとコードスタイルは最も快適で、分かりやすくてメンテナンスがよくて、性能がよくて、以下に記録するのはMediasoupの学習過程で出会ったいくつかの穴です.
実は主にnodeに慣れていないことによる穴なので、覚えておいてください.同じ新しい学者に役に立つかもしれません.
エラー1:npm installエラー
このGoogleは海外で探しても解決策が見つからず、最後にnpm install--ignore-scriptsで通過し、影響があるかどうか分かりません
エラー2:npm startエラーメッセージ:'DEBUG'は内部または外部コマンドではなく、実行可能なプログラムではありません
解決策は、次の方法で起動します.
set DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'}
node server.js
エラー3:WEBアプリ起動エラー:error Expected linebreaks to be'LF'but found'CRLF'linebreak-style
解決:修正.eslintrc.jsファイル'linebreak-style':[2,'windows'],
エラー4:mediasoup throwing MediaSoupTypeError:invalid IP'localhost'
解決:サーバ側config.js構成の問題、注意私はただ本機のテストです
const os = require('os');
module.exports = { //Listening hostname (just for `gulp live` task). domain : 'localhost', //Signaling settings (protoo WebSocket server and HTTP API server). https : { listenIp : '0.0.0.0', //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 : { logLevel : 'warn', logTags : [ 'info', 'ice', 'dtls', 'rtp', 'srtp', 'rtcp', 'rtx', 'bwe', 'score', 'simulcast', 'svc', 'sctp' ], rtcMinPort : process.env.MEDIASOUP_MIN_PORT || 40000, rtcMaxPort : process.env.MEDIASOUP_MAX_PORT || 49999 }, //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 WebRtcTransport options for WebRTC endpoints (mediasoup-client, //libmediasoupclient). //See https://mediasoup.org/documentation/v3/mediasoup/api/#WebRtcTransportOptions webRtcTransportOptions : { listenIps : [ { ip : '192.168.2.100', announcedIp : null } ], 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 : { listenIp : { ip : '192.168.2.100', announcedIp : null }, maxSctpMessageSize : 262144 } } };
他の新しい学者に役立つ情報:
1.mediasoupはortcインタフェースを使用しています.現在のwebrtcのsdp交換メカニズムではありません.ortcはwebrtcの次世代インタフェースと言っていますが、数年前にgoogleはortcをサポートすると名乗っていましたが、chromeがortcをサポートしている記録は見つかりません.マイクロソフトのedgeはortcインタフェースをサポートしていました.だからmediasoupを使用すると、webでもwinでもiosでも、Androidはmediasoupでカプセル化されたクライアントライブラリを使用します
実は主にnodeに慣れていないことによる穴なので、覚えておいてください.同じ新しい学者に役に立つかもしれません.
エラー1:npm installエラー
Error: Unknown platform: win32
at Object. (E:\code\mediasoup-demo\server
ode_modules\clang-tools-prebuilt\install.js:24:33)
at Module._compile (internal/modules/cjs/loader.js:1158:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\clang-tools-prebuilt):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] postinstall: `node install.js`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
このGoogleは海外で探しても解決策が見つからず、最後にnpm install--ignore-scriptsで通過し、影響があるかどうか分かりません
エラー2:npm startエラーメッセージ:'DEBUG'は内部または外部コマンドではなく、実行可能なプログラムではありません
解決策は、次の方法で起動します.
set DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'}
node server.js
エラー3:WEBアプリ起動エラー:error Expected linebreaks to be'LF'but found'CRLF'linebreak-style
解決:修正.eslintrc.jsファイル'linebreak-style':[2,'windows'],
エラー4:mediasoup throwing MediaSoupTypeError:invalid IP'localhost'
解決:サーバ側config.js構成の問題、注意私はただ本機のテストです
const os = require('os');
module.exports = { //Listening hostname (just for `gulp live` task). domain : 'localhost', //Signaling settings (protoo WebSocket server and HTTP API server). https : { listenIp : '0.0.0.0', //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 : { logLevel : 'warn', logTags : [ 'info', 'ice', 'dtls', 'rtp', 'srtp', 'rtcp', 'rtx', 'bwe', 'score', 'simulcast', 'svc', 'sctp' ], rtcMinPort : process.env.MEDIASOUP_MIN_PORT || 40000, rtcMaxPort : process.env.MEDIASOUP_MAX_PORT || 49999 }, //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 WebRtcTransport options for WebRTC endpoints (mediasoup-client, //libmediasoupclient). //See https://mediasoup.org/documentation/v3/mediasoup/api/#WebRtcTransportOptions webRtcTransportOptions : { listenIps : [ { ip : '192.168.2.100', announcedIp : null } ], 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 : { listenIp : { ip : '192.168.2.100', announcedIp : null }, maxSctpMessageSize : 262144 } } };
他の新しい学者に役立つ情報:
1.mediasoupはortcインタフェースを使用しています.現在のwebrtcのsdp交換メカニズムではありません.ortcはwebrtcの次世代インタフェースと言っていますが、数年前にgoogleはortcをサポートすると名乗っていましたが、chromeがortcをサポートしている記録は見つかりません.マイクロソフトのedgeはortcインタフェースをサポートしていました.だからmediasoupを使用すると、webでもwinでもiosでも、Androidはmediasoupでカプセル化されたクライアントライブラリを使用します