WebRTC开源项目(mediasoup)学习全链路调试环境搭建mediasoup是一个优秀的开源项目,学习开源项目的

mediasoup也是学习入门WebRTC的优秀的项目,而且从前到后一条龙学到底,本文会说明mediasoup项目本地调试环境(js/nodejs/c++)的搭建。

使用到的工具与环境为:

mediasoup主要提供了三个github项目,下面括号里为写文档时对应的commit_id,分别为:

首先clonemediasoup-demo项目,目录结构如下:

接下来去启动后端服务

opensslreq-new-newkeyrsa:1024-x509-sha256-days3650-nodes-outfullchain.pem-keyoutprivkey.pem将生成的fullchain.pem和privkey.pem复制到server/certs目录

虽然vscode/webstorm也可以调试nodejs程序,但总感觉没有Chrome浏览器方便,因此我们主要使用Chrome来调试,方法可以将server/package.json里的start命令稍微修改下:

"start":"node--inspect=8888server.js",运行命令后,去Chrome浏览器打开:chrome://inspect/#devices

打开OpendedicatedDevToolsforNode,配上本地的8888端口,然后稍等片刻就能看到inspect按钮,打开后就可以愉快地给代码打断点了。

首先我们要下载mediasoup项目,然后自己编译一个Debug版本,因为只有Debug版本才会生成pdb文件,在vs里配置好pdb后才能愉快地打断点。

在package.json里已经配置好了编译的脚本,因此不需要做什么额外的工作,只是需要将python环境里有MEDIASOUP_BUILDTYPE改为Debug字符串,如果不改环境变量就直接改task.py里的这行:

MEDIASOUP_BUILDTYPE=os.getenv('MEDIASOUP_BUILDTYPE')or'Debug';改完之后就开始编译

"worker:build":"nodenpm-scripts.mjsworker:build",编译过程中遇到一个问题,是python里的PTY错误,查了半天没有搞定,然后看到task.py里有个PTY_SUPPORTED=sys.stdout.isatty();根据系统能力探测,可能是探测支持,但实际又有什么问题,索性把PTY_SUPPORTED改为False,结果跑通。

编译完成的程序在mediasoup/worker/out/Debug/mediasoup-worker.exe,pdb文件在mediasoup/worker/out/Debug/build/mediasoup-worker.pdb

这个在nodejs程序里也有环境变量,使用的话是在mediaosup/node/src/Worker.ts里,如果有环境变量优先使用环境变量

exportconstworkerBin=process.env.MEDIASOUP_WORKER_BINprocess.env.MEDIASOUP_WORKER_BIN:process.env.MEDIASOUP_BUILDTYPE==='Debug'path.join(__dirname,'..','..','worker','out','Debug','mediasoup-worker'):path.join(__dirname,'..','..','worker','out','Release','mediasoup-worker');因此我们在上步指定IP的位置再加一行代码:

process.env.MEDIASOUP_WORKER_BIN='D:\...\mediasoup\worker\out\Debug\mediasoup-worker.exe';重新运行命令,看下我们自己编译的worker是否运行正常。

上步使用我们自己编译的exe是为了让编译出来的pdb和exe配套,下面在vs里配置pdb,打开工具-选项-符号,在右侧添加pdb的目录(注意是目录,不是pdb文件),配置完点击确定

在程序运行的前提下,打开调试-附加到进程,在里面过滤mediasoup,找到程序后点击附加

随便打个断点测试下,生效!断点要打开源码的位置,即vs打开mediasoup项目,附加进程后,添加断点没有黄色的叹号就是成功。

THE END
1.开源项目推荐:algolearnalgo-learn学习数据结构与算法的代码示例,目前提供 Java、Python、Go、C++ 多种语言支持。 项目地址: https://gitcode.com/gh_mirrors/al/algo-learn 项目基础介绍和主要编程语言 algo-learn是一个专注于数据结构与算法学习的开源项目,旨在帮助开发者通过实践来掌握和提升算法与数据结构的基本功。该项目提供了多种编https://blog.csdn.net/gitblog_00381/article/details/144286650
2.锐英源软件C++开源社区C++开源项目研究锐英源软件C++开源社区,关注C++开源项目研究和C++开源项目学习研讨,提供C++开源英语相关文档,供大家提升基本素质。http://www.wisestudy.cn/opensource-cpp.html
3.值得学习17个C/C++超经典开源项目腾讯云开发者社区总结了17个 C/C++业内非常经典的开源项目,能够很好的帮助上手与进阶C/C++项目开发,积累项目经验。 包含C/C++ 各个领域,超高含金量。 熟练掌握,面试加分项! 再也不用怕面试没项目了! 目录 值得学习的C语言开源项目 Libevent Memcached Redis Webbench https://cloud.tencent.com/developer/article/2181809
4.一个收集C/C++新手学习的入门项目,整理收纳开发者开源的小项目本repo搜集全网适合C/C++新手学习的入门项目,整理收纳开发者开源的小项目、工具、框架、游戏等,帮助大家更好地学习c/c++。 所有数据来源于互联网。所谓取之于互联网,用之于互联网。 如果涉及版权侵犯,请邮件至wchao_isvip@163.com,我们将第一时间处理。 https://github.com/0voice/introduce_c-cpp_manual?tab=readme-ov-file
5.我的一些实用的Java/C++开源项目整理企业架构本文整理了我之前做的一些Java/C++开源项目,这些项目在我的博客中分别介绍过,为了方便阅读和使用,我进行了整理。 Java项目: Java 全能高效 MVC & REST 开发框架 Portal-Basic Java 日志切割清理工具 Log-Cutter C++项目: 通用高性能 Windows Socket 组件 HP-Socket https://www.iteye.com/news/27794
6.整理了GitHub上80个c/c++的项目,看着学吧~不保熟阅读学习一些库、框架以及集成项目的源码。学习大厂或是大牛的编码规范、项目结构之类的,提高阅读源码的能力。对于我们精进自己的技术是十分有帮助的。 1.《30天自制C++服务器》 ①语言:c++ ②来源:GitHub 目前star:4.8k ③项目地址:https://github.com/yuesong-feng/30dayMakeCppServer https://www.nowcoder.com/discuss/614479695123316736
7.有什么适合提高C/C++网络编程能力的开源项目推荐–PingCode通过FFmpeg,开发者可以学习音视频数据的处理和流式传输,这在网络编程中尤为重要。了解音视频压缩、封装格式转换和网络传输等知识是进行高级网络编程的必备能力。 综上,参与这些开源项目不仅能够提升C/C++网络编程能力,还能够激发开发者对于高性能网络通信、异步事件处理和现代编程技术的探索热情。通过实践,开发者能将理论https://docs.pingcode.com/ask/103214.html
8.成都四方伟业软件股份有限公司5.有效理解项目经理和客户的需求,能够清晰的沟通并在代码中实现。 岗位要求: 1.熟悉UE4 UI,动画,场景,材质等各个模块; 2.熟悉C++/C#/Java至少其中一门语言 3.1年UE4开发使用经验优先。 21、C++工程师 工作地点:成都 岗位职责: 1.参与基于C/C++开源软件系统的设计与开发; https://mba.shzu.edu.cn/2021/0304/c3756a153725/page.htm
9.Ubuntu下ROS变种ROCOS的系统架构它在保留ROS原有的点对点设计、多语言支持、架构精简、组件化工具包丰富以及免费且开源等特点的基础上, 更强调对某一特定场景的支持(如本文提及的ROCOS就是对多机调度场景的支持), 显然它会比ROS更专一, 功能更稳定, 与特定场景的适配性更好. 截止目前, 由于ROCOS需要的成本投入远低于ROS, 用户不需要学习ROS中https://c-s-a.org.cn/html/2021/7/8022.html