Version 0.1.0a2
Released December 21st, 2025
Added
- Enabled in future versions after further testing, new audio streaming modes that offer a hybrid between RAM/storage audio streaming.
- New undocumented voice gateway opcode
12. Awaiting further information from Discord.
Fixed
- AttributeError in
FFmpegPoolcaused by an internal attribute not added to__slots__.
Version 0.1.0a1
Released December 20th, 2025
Added
- Configuration override options in
VoiceClientconstructor. Allows the customization of output audio options, like bitrate and channels. - Volume settings per
AudioPlayer, or override per source in eachAudioSourceconstructor. - Clean
VoiceClient.close()method.
Changed
- Internal
FFmpegprocesses now pooled globally instead of per connection/guild. Detailed log below**. - Removed repetitive internal error catches - causing silent errors.
FFmpeg Process Pool Log
- During testing/benchmarking, a singular
FFmpegspawned process per guild/connection would occupy~4.5 MBof RAM on the host server. - Doing a bit of math, and a
O(N)programmatic linear scale,100guild connections playing audio concurrently would occupy~470 MB. - Because of that figure, and plans for near-future scalability, it was decided to make a
FFmpegprocess pool. - This pool would create new processes as they were needed, up to a certain amount per logical CPU core, up to a hardcap. All of this is configurable using the new configuration settings in the
VoiceClientconstructor. - Because these processes encode each audio source at once and then store the raw Opus frames in a buffer, each audio source goes from about
3.3 MB of MP3to2.6 MB of Opusinside of the buffer - with high quality settings - thus lowering the amount of RAM internally. - Taking an average of 10 processes at the same time,
~50 MBof RAM, and 100 servers streaming audio (2.6 MBof RAM each), it's about310 MBof RAM used total, thus saving about40%of RAM usage on a host server, dwindling hosting costs. 100 concurrent servers fits in the size of aGoogle Chrome Tab. Pretty neat.