4

mediasoup 3.13.16 worker 的编译及生成 xcodeproj 和 sln

 7 months ago
source link: http://blog.tubumu.com/2024/01/23/mediasoup-build-02/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一、准备工作

1、安装 node

brew install node

可以不预先安装 meson(ninjia)flatc, 编译时会自动使用 pip 安装。故需确保安装了 python3

2、获取源码并安装 node 包

# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica
git clone https://github.com/versatica/mediasoup
cd mediasoup
# 如果不关心 node 部分,可以不运行下行。
npm i

二、默认编译

默认编译将产出 mediasoup-worker 可执行程序。

# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
export MEDIASOUP_BUILDTYPE=Release # 可选,默认 Release
export MEDIASOUP_OUT_DIR=$(pwd)/out # 可选,默认 out 子目录
npm run build worker:build # node npm-scripts.js worker:build

当然,也可以直接执行 make :

# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
# 默认是:mediasoup-worker
make -C worker
# 或者 Debug 版
# MEDIASOUP_BUILDTYPE=Debug make -C worker

如果报”ERROR: Subproject exists but has no meson.build file”之类的错误,执行命令 make -C worker clean-all 后重试。

三、生成 xcodeproj

# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
make -C worker xcode
# 或者:
# cd worker && meson setup --buildtype debug --backend xcode ./out/xcode

四、生成 sln

首先确保 meson 安装:

pip install meson
# 当前目录:C:\Workspace\OpenSource\mediasoup
npm run flatc:worker
cd worker
meson setup --buildtype debug --backend vs out\vs

Makefile 没有相关配置,所有不能执行 make -C worker vs
如有必要:执行 npm run flatc:worker 之前将 task.py 中的 PTY_SUPPORTED 的值硬编码为 False
如有需要:set https_proxy=http://127.0.0.1:10809

五、编译 libmediasoup-worker 静态库

# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
export MEDIASOUP_BUILDTYPE=Release # 可选,默认 Release
export MEDIASOUP_OUT_DIR=$(pwd)/out # 可选,默认 out 子目录
make -C worker libmediasoup-worker

六、编译 libmediasoup-worker 动态库

首先打开 meson.build 文件,搜索 libmediasoup_worker = library,将 library 改为 shared_library

# 当前目录:/Users/alby/Workspace/OpenSource/Multimedia/versatica/mediasoup
export MEDIASOUP_BUILDTYPE=Release # 可选,默认 Release
export MEDIASOUP_OUT_DIR=$(pwd)/out # 可选,默认 out 子目录
make -C worker libmediasoup-worker

生成 P/Invoke 代码(尚未测试):

dotnet tool install --global ClangSharpPInvokeGenerator --version 14.0.0-beta2
DYLD_LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib ClangSharpPInvokeGenerator -n Tubumu.Mediasoup -m MediasoupNative -o MediasoupNative.cs -l ./worker/out/Release/libmediasoup-worker.dylib -f ./worker/include/lib.hpp

后来在较新版本上的 mediasoup 上尝试生成 xcodeproj 失败,并且提示警告 WARNING: xcode backend is currently unmaintained, patches welcome

npm-scripts.js
Makefile
task.py
meson.build


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK