discordjs / voice

Implementation of the Discord Voice API for discord.js and other JS/TS libraries
Apache License 2.0
327 stars 111 forks source link

High latency buffering of audio before playback #235

Open lukejriddle opened 2 years ago

lukejriddle commented 2 years ago

Issue description

It takes the AudioPlayer around 800-900ms to fully buffer before finally playing in a voice channel. This is up from <100ms from older versions of Discord.js, using the dispatcher.

I have used tweetnacl and libsodium-wrappers, I have created AudioResources from both local files and remote, latency has not improved.

Steps to reproduce:

Code sample

const connection = joinVoiceChannel({
    channelId: channel.id,
    guildId: channel.guild.id,
    adapterCreator: channel.guild.voiceAdapterCreator
});

const player = createAudioPlayer();
const resource = createAudioResource(path.join(__dirname, '../../130876312133959680.mp3'));

player.play(resource);
connection.subscribe(player);

player.on('stateChange', (oldState, newState) => {
  if (oldState.status === 'playing' && newState.status === 'idle') {
    connection.disconnect();
  }
});

@discordjs/voice version

0.7.5

Node.js version

v16.13.0

Operating system

Windows

Priority this issue should have

Low (slightly annoying)

botchi09 commented 2 years ago

This bug also often results in the first 800ms or so of audio not being played. My workaround is setting the audio resource volume to inline and adjusting it when I want it to mute or not