admin管理员组

文章数量:1586848

前言

mediasoup官网以及网络上博客大部分都是在linux下安装部署,但是我更多的是在windows下做c++开发,使用工具更多的是vs,所以想在windows下安装mediasoup-demo,并且用vs调试mediasoup-worker的c++代码
 

参考以下大神文章,还是遇到一些问题,不过都解决了,所以自己再记录一下安装运行过程

视频会议软件EasyRTC-SFU之mediasoup-demo在 Windows上的编译安装_sfu midemoup-CSDN博客

win7下启动mediasoup官网demo的条件(其实是坑)_windows mediasoup-CSDN博客

mediasoup-demo地址:GitHub - versatica/mediasoup-demo: mediasoup official demo application


一、环境准备

windows10

node v14.16.0 (官网要求 >= v8.6.0)(我下载的最新版本)

npm-v6.14.11  (安装node 14.16.0的时候,里面已经附带安装了npm,不用单独安装)

python-v2.7.17  (不可以是 python3,安装参考博客安装的,到底可不可以python3,不确定)--安装完python,记得把安装路径加入到环境变量path中

            此处我遇到一个问题,我电脑上本来有安装webrtc depot_tools,其中有python,cmd命令行中python -V查看版本也是2.7的,但是后面下载mediasoup-demo代码时报错,找不到python,此处可以卸载掉重新安装一下python,也可以where python查看                         一下机器中在哪个目录还安装了python

        git-v2.30.0

visual studio v2019

             配置环境变量:

                 1.vs2019的MSBuild.exe的路径加到path中,我的路径:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin

                 2.新建环境变量 GYP_MSVS_VERSION ,值为 2019

设置 npm 下载镜像站点为淘宝镜像,(不知道这个是不是永久设置,如果不是永久设置的话,中间如果关闭cmd窗口,或者新打开一个cmd窗口,都重新设置一遍)
        npm config set registry https://registry.npm.taobao

二、走的弯路

  1. mediasoup如果要运行,我们应该下载安装mediasoup-demo,而不是mediasoup(只能学习源代码),本人就是搞混了,先直接按照官方下载了mediasoup,并且编译通过,也能生成mediasoup-worker的vs工程sln,但是找不到运行方式

以下mediasoup下载编译完全可以不做,我只是记录一下我的下载过程

准备好环境,直接按照官方命令,在cmd命令行中执行,npm install mediasoup@3 --save,整个过程不用做任何操作,包括代码下载,worker sln工程生成,编译生成.\node_modules\mediasoup\worker\out\Release\mediasoup-worker.exe

ps:下载代码的过程我开了vpn,下载也挺快,不确定不开vpn,会不会有问题

三、下载mediasoup-demo源码

  • Clone the project:
$ git clone https://github/versatica/mediasoup-demo.git
$ cd mediasoup-demo
$ git checkout v3

四、编译安装依赖

完全按照参考博客做的,github上mediasoup-demo官方也是这个步骤,cd server, npm install

$ cd server

打开 package.json 文件。修改第 22 行,为 “mediasoup”: “^3.6.16”,

如果不修改此行,则会从 github 中下载 mediasoup-v3 版本的依赖,否则会超级慢。修改后会直接从 npm 的镜像源中下载,加快速度。

$ npm install

在运行过程中会出现下图中的错误,不用理会,mediasoup的依赖 clang-tools-tutorial ,主要是在 Linux 和 MacOS 中使用,Windows 中不涉及。(此处我没有遇到错误)

五、修改服务端配置

  1. 复制 config.example.js,修改为 config.js
  2. 修改所有的 ip 和 announcedIp 为本机 IP。如果内网公网不一致,则 announcedIP 设置为公网 IP(3个地方要修改)
  3. 在 server 文件夹下新增 certs 文件夹,将自己的公钥证书和私钥证书放进去。修改 config.js 的配置。cert 为公有证书,key 为私有证书。

         证书这个步骤,不会弄,我只在局域网内运行,拷贝了其他地方的两个文件leaf.key,leaf.pem,应该是未生效的,最后chrome浏览器进入房间,还是提示不安全的https访问,不用管,高级里面选择继续访问就可以了,如果你的坏境最后要部署在公网,你可以继续学习一下怎么生成证书。1.如果用公有云服务,会提供  2.或者找做web的同事帮忙吧

六、编译安装客户端

  1. $ cd app
  2. 修改 .eslintrc.js 文件,原先为 unix,修改为 windows
  3. $ npm install
  4. $ npm install -g gulp-cli

          3,4步骤的顺序不记得了,官方是3,4,别人博客有的是4,3

七、编译生成woker.exe

      做完前面6个步骤以后,我直接运行环境,node server.js的时候会报以下错误,原因是worker目录下没有生成mediasoup-worker.exe,不知道其他人会不会遇到这样的问题

    (node:6948) UnhandledPromiseRejectionWarning:Error:spawn D:\webrtc\media-demo\server\node_modules\mediasoup\worker\out\Release\media-worker ENOENT

      

解决办法:

cd mediasoup-demo\server\node_modules\mediasoup

npm install

这样才会调用vs编译生成mediasoup-worker.exe,以及mediasoup-demo\server\node_modules\mediasoup\worker\mediasoup-worker.sln

八、运行

进入 server 文件夹,运行命令行设置临时环境变量

set DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'}

也可以不设置环境变量,直接运行 node server.js

暂时不知道上面步骤不执行会有怎样的问题

  1. 运行服务端   cd server ,    node server.js
  2. 运行客户端   新启动一个cmd窗口,cd app ,    gulp live

                gulp live会默认打开浏览器,

 此处注意gulp live默认打开的网址,是我电脑上的一个虚拟网卡地址192.168.117.1,不是之前server配置文件中配置的ip,这样网页上会一直提示 websocket connection failed

如果你电脑上有多个网卡,大概率也会出现这个问题,

需要自己手动把网址ip改成你正确的ip,https://192.168.1.115:3000/?info=true&roomId=n94zfs9t ,然后就可以看到自己的画面了,用另一个笔记本访问同样的roomid,就可以正常通话了

用ios手机safari访问,也出现了https的不安全提示,继续访问以后,提示websocket connection failed,不知道什么原因

错误的ip访问地址,错误图

     server正常运行图

九、vs打开worker工程调试c++代码

vs2019打开 mediasoup-demo\server\node_modules\mediasoup\worker\mediasoup-worker.sln

找到目前通话使用的mediasoup-worker.exe进程id,(我是通过cpu占用找到的,后面研究一下日志中是否也有相应记录)

debug附加到相应的mediasoup-worker进程,然后就可以直接打断点调试worker的c++代码了


总结

  1. 环境工具要配置好
  2. linux上命令和windows命令有一部分差异
  3. 出现错误以后,找不到答案

mediasoup在windows上调试太方便了

更多webrtc和mediasoup等相关rtc的内容,请关注百家云brtc, 可以免费试用

百家云-开发文档

本文标签: 代码DemomediasoupWorkerWindows