对于mediasoup的编译要求,可以参考:https://mediasoup.org/documentation/v3/mediasoup/installation/

在解决了gcc和python的问题后,由于mediasoup的编译使用的nijia meason,于是使用npm install初始化项目模块的时候,只要执行到mediasoup的安装,总是会报:<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)>的错误(曾经cent os 7也会报相同的错误,于是为了防止麻烦迁移到了ubuntu)。

经测试,以下的方法皆无法解决上述问题:

  • 更新系统的根证书:sudo yum reinstall ca-certificates,无效;
  • 手动指定使用的SSL证书路径:export SSL_CERT_FILE=/path/to/cacert.pem,无效;
  • 全局禁用SSL验证:export PYTHONHTTPSVERIFY=0,无效;

之后只能通过修改源代码的方式解决,步骤如下:

1、下载mediaosup源码并检出到node所使用的依赖分支

git clone https://github.com/versatica/mediasoup.git
cd mediasoup
git checkout 3.12.6

2、开始预编译,并等待报错信息出现:

cd worker
make mediasoup-worker # 或者直接执行make

3、修改meason源代码:

打开out/pip/mesonbuild/wrap/wrap.py,并添加以下python代码:

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

4、重新执行make,等待编译完成;

5、编译成功后,最后输出文件位于out/Release/mediasoup-worker,可以通过ldd mediasoup-worker查看所需要的动态库情况。

 

如果不想下载源代码,也可以在npm install时,添加--ignore-scripts参数,这样会将node项目的依赖下载到本地,而不是因为先执行包内的脚本导致依赖包无法下载。等执行完成后,在手动进入node_modules的mediasoup目录手动执行编译,方式与上述第2步及以后一致。