win 10下mediasoup構築過程のいくつかのピット記録

7520 ワード

私达はもとはJanusのwebrtcシステムに基づいて基本的に利用することができて、システムは今最高で5万人まで同时にオンラインになって、しかし确かにJanusのいくつか不足を発见して、私のこのようなc++が好きな人にとって、Janusのコードを见るのは本当に苦痛で、そこで研究の目的にあって、Medooze、Mediasoupなどを研究して、比較するとMedoozeサービス側はwindowsプラットフォームをサポートしていません(私のいくつかの原因でwindowsの下で構築する必要があります)、Mediasoupのフレームワークとコードスタイルは最も快適で、分かりやすくてメンテナンスがよくて、性能がよくて、以下に記録するのは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でカプセル化されたクライアントライブラリを使用します