关于 Mumble开源语音聊天软件项目的的分析

发布时间 2023-12-10 17:22:37作者: 不会笑的孩子

开源地址

https://github.com/mumble-voip/mumble

Mumble

Mumble:语音通信软件

  • 低延迟、高质量

  • 低延迟通信

  • C/S(Client/Server)

  • 跨平台(跨风俗来运行)

  • Opus音频编码器

  • SSL/TLS加密

源码整体结构分析

mumble/src/client

  • .ts 用于本地化(翻译)的内容由外部服务处理。

  • main.cpp 则这里是客户端的主入口点("主函数") 一般程序的入口点都是在main.cpp来进行的,所以我们分析一些程序的时候需要从main.cpp来入手。

  • MainWindow.cpp:这是Mumble客户端的核心。负责QT界面的。信号槽之类的。用来传递信号

  • UserModel.cpp:负责管理通道和用户树的内存表示。客户端上的所有用户和通道对象均在此处创建(这个还多少没有理解)

  • Messages.cpp:此类实现了在客户端执行的所有Protobuf消息处理,关于Protobuf的了解我们先暂时放过他,据我了解是一个跟服务端定义的通信方式。

  • ServerHandler.cpp:此类负责管理与给定服务器的连接。它处理与服务器的即时网络连接,并确保所有消息都在适当的线程中发送和接受。大概意思就是说对服务器传来的信息处理

  • AudioInput.cpp/AudioOutput.cpp:从名字来看这是一个音频输入和输出的结果。这应该是对驱动传输过来的数据进行下一步的处理。所以这个类可以着重去分析以下

  • PluginManager.cpp:这是一个插件相关的cpp

  • API_V:这些是插件API函数的各种实现。这些事插件可能调用到的函数。

  • Global.cpp:该类是用来控制全局的变量。保证整个客户端的重要信息。

mumble/src/server

虚拟服务器:其实说白了就是一台主服务器中包含有多个小型的服务器

  • main.cpp: 服务器端的主要入口点

  • Meta.cpp:来负责管理不同的虚拟服务器。

  • Messagesc.cpp:来负责管理客户端传来的消息,并进行下一步的处理。

  • Server.cpp:虚拟服务器实例的核心。它包含一堆辅助功能并完全处理UDP音频线程。

  • ServerDB.cpp:该文件实现了各种数据库的访问呢。