Previously Mumble was using a custom binary format for transmitting data via UDP (mainly audio). This has worked for a long time but besides being inconvenient for 3rdParty implementors (they had to manually re-implement encoding and decoding support for this format) this format was not very flexible and changes to the data format were very hard. In order to improve on this situation, this commit introduces changes that allow to use Protobuf for the UDP messages as well (it's already used for TCP). With that it should be relatively easy to extend/change the UDP packet formats in the future and 3rdParty implementors can now simply use Protobuf to handle decoding/encoding packets for them (much less work and much less prone to errors). Since the new Protobuf format is incompatible with the old UDP format, this commit also includes support for dealing with older clients or servers that don't recognize the new protocol yet. That way the new protocol format is only used if both the client and the server are recent enough to have it implemented (assumed to be the case >=1.5.0). Note also that the server will make sure that clients using the old and the new format can seamlessly communicate with one another. Therefore, on the surface it should not be noticeable to the user which protocol is currently used. Note also that the new protocol format only supports Opus as an audio codec. If one of the legacy codecs is to be used, the legacy packet format has to be used as well. However, all codecs except for Opus will be removed from Mumble in the future anyway. Fixes #4350 NOTE: When this gets merged, all clients and servers claiming to support the protocol version 1.5.0 that do not include these changes, will become incompatible with the ones that do integrate these changes. This is important for everyone closely following our upstream master branch. A simple update to the latest code changes (including the changes from this PR) should be enough to restore full compatibility. All servers and clients of version < 1.5.0 will be not affected by this as this PR is completely backwards compatible with those clients. |
||
|---|---|---|
| .ci | ||
| .github | ||
| .tx | ||
| 3rdparty | ||
| 3rdPartyLicenses | ||
| cmake | ||
| docs | ||
| g15helper | ||
| helpers/vcpkg/ports/zeroc-ice | ||
| icons | ||
| installer | ||
| macx | ||
| man | ||
| overlay | ||
| overlay_gl | ||
| overlay_winx64 | ||
| plugins | ||
| samples | ||
| screenshots | ||
| scripts | ||
| src | ||
| themes | ||
| .appveyor.yml | ||
| .backportrc.json | ||
| .cirrus.yml | ||
| .clang-format | ||
| .gitignore | ||
| .gitmodules | ||
| .mailmap | ||
| CMakeLists.txt | ||
| CODE_OF_CONDUCT.md | ||
| CODING_GUIDELINES.md | ||
| COMMIT_GUIDELINES.md | ||
| Dockerfile | ||
| Doxyfile | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
Mumble - Open Source voice-chat software
Mumble is an Open Source, low-latency and high-quality voice-chat program written on top of Qt and Opus.
There are two modules in Mumble; the client (mumble) and the server (murmur). The client works on Windows, Linux, FreeBSD, OpenBSD and macOS, while the server should work on anything Qt can be installed on.
Please note that with "Windows" we mean 7 and newer. Vista may be supported, but we can't guarantee it. If you don't want to encounter potential issues, you may download Mumble 1.3.x, the last version to provide support for XP.
The documentation of the project can be found on the wiki. The FAQ can also be found there.
Contributing
We always welcome contributions to the project. If you have code that you would like to contribute, please go ahead and create a PR. While doing so, please try to make sure that you follow our commit guidelines.
If you are new to the Mumble project, you may want to check out the general introduction to the Mumble source code.
Translating
Mumble supports various languages. We are always looking for qualified people to contribute translations.
We are using Weblate as a translation platform. Register on Weblate, and join our translation project.
Writing plugins
Mumble supports general-purpose plugins that can provide functionality that is not implemented in the main Mumble application. You can find more information on how this works and on how these have to be created in the plugin documentation.
Building
For information on how to build Mumble, checkout the dedicated documentation.
Reporting issues
If you want to report a bug or create a feature-request, you can open a new issue (after you have checked that there is none already) on GitHub.
Windows
Running Mumble
After installation, you should have a new Mumble folder in your Start Menu, from which you can start Mumble.
Running Murmur
Doubleclick the Murmur icon to start murmur. There will be a small icon on your taskbar from which you can view the log.
To set the superuser password, run murmur with the parameters -supw <password>.
MacOS
Running Mumble
To install Mumble, drag the application from the downloaded
disk image into your /Applications folder.
Running Murmur
Murmur is distributed separately from the Mumble client on MacOS. It is called Static OS X Server and can be downloaded from the main webpage.
Once downloaded it can be run in the same way as on any other Unix-like system. For more information please see the "Running Murmur" in the Linux/Unix section below.
Linux/Unix
Running Mumble
If you have installed Mumble through your distributon's package repository, you should be able to find Mumble in your start menu. No additional steps necessary.
Running Murmur
Murmur should be run from the command line, so start a shell (command prompt) and go to wherever you installed Mumble. Run murmur as
murmurd [-supw <password>] [-ini <inifile>] [-fg] [v]
-supw Set a new password for the user SuperUser, which is hardcoded to
bypass ACLs. Keep this password safe. Until you set a password,
the SuperUser is disabled. If you use this option, murmur will
set the password in the database and then exit.
-ini Use an inifile other than murmur.ini, use this to run several instances
of murmur from the same directory. Make sure each instance is using
a separate database.
-fg Run in the foreground, logging to standard output.
-v More verbose logging.
Build and run from Docker
On recent Docker versions you can build images directly from sources on GitHub:
docker build --pull -t mumble-server github.com/mumble-voip/mumble#master
Example --pulls each time to check for updated base image, then downloads and builds master branch.
OpenGL Overlay
The OpenGL overlay works by intercepting the call to switch buffers, and just before the buffer switch, we draw our nice GUI.
To load a game with the overlay enabled, start the game like this:
LD_PRELOAD=/path/to/libmumble.so.1.1 gamename
If you have Mumble installed through the binary packages, this can be done by simply typing:
mumble-overlay gamename
