开源地址
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:该文件实现了各种数据库的访问呢。