EPNW / dumble

A Mumble transport client framework supporting multiple Mumble features such as fully encrypted udp transport or user management
https://pub.dev/packages/dumble
BSD 2-Clause "Simplified" License
21 stars 7 forks source link

dumble

dumble (dart+mumble) is a dart Mumble transport client framework. It enables you to:

No audio recording or coding functions?

A Mumble user typically uses a microphone to record a raw audio, which is then encoded using an audio codec and finally segemented by a mumble client and send to the mumble server. Dumble is a transport client framework: It's not its task to record, play, encode or decode audio. It just segements and transports already encoded streams, and ensures that they are transmitted according to the mumble specification.

Audio recording and playing depends on the underlying platform and is not abstracted by the dart:vm. It works different on Windows, Mac, Linux, IOS and Android, so every platform needs a different implementation. For example, on Linux you could use alsas a arecord, where Windows offers you its own api.

Why are no audio encoding and decoding tools are integrated? Mumble supports different audio codecs, but in practice, opus is the only relevant up-to-date codec. There is no pure dart implementation of opus, just wrappers for dart and flutter, which require additional building steps. It's not possible to create an universal plug in solution. So if you are using dumble on flutter, integrate opus_flutter yourself. And if you are using dumble without flutter, integrate opus_dart yourself.

Keep in mind that dumble is a transport framework and not an app.

Mumble version

This package was designed for servers using Mumble 1.4, but some features are sill missing, see above.

Further Null safety refinements

While the initial migration to null safety was done in version 0.8.0, there are some things that could be better and will be refined in the future:

Roadmap

See the ROADMAP.md on what steps are planned for the future of this package.

Examples

There are several examples, showing how to use text chat, creating channels, and transmit audio. They can all be found in the example folder.