Skip to content

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 FFmpegPool caused by an internal attribute not added to __slots__.

Version 0.1.0a1

Released December 20th, 2025

Added

  • Configuration override options in VoiceClient constructor. Allows the customization of output audio options, like bitrate and channels.
  • Volume settings per AudioPlayer, or override per source in each AudioSource constructor.
  • Clean VoiceClient.close() method.

Changed

  • Internal FFmpeg processes 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 FFmpeg spawned process per guild/connection would occupy ~4.5 MB of RAM on the host server.
  • Doing a bit of math, and a O(N) programmatic linear scale, 100 guild connections playing audio concurrently would occupy ~470 MB.
  • Because of that figure, and plans for near-future scalability, it was decided to make a FFmpeg process 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 VoiceClient constructor.
  • 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 MP3 to 2.6 MB of Opus inside 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 MB of RAM, and 100 servers streaming audio (2.6 MB of RAM each), it's about 310 MB of RAM used total, thus saving about 40% of RAM usage on a host server, dwindling hosting costs. 100 concurrent servers fits in the size of a Google Chrome Tab. Pretty neat.