Воспроизвести MemoryStream в DiscordBot - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь сыграть MemoryStream в Discord.Подключение к Discord работает нормально, а также к AudioChannel.Я собираю данные с помощью NAudio и DataAvailable.Теперь я пытаюсь преобразовать данные из MemoryStream в WaveStream и отправить данные в DiscordBot.Вот код DataVAilable из класса NAudio (Ready (MS) вызывает событие, чтобы показать основному классу, что MemorStream готов отправить на discordBot):

private void Audioin_DataAvailable(object sender, WaveInEventArgs e)
    {
        ms.Write(e.Buffer, 0, e.BytesRecorded);
        if (BytesRecorded == 0)
            Ready(ms);
        BytesRecorded += e.BytesRecorded;
    }

Вот соединение сМетод голосового канала:

private async void connect_channel()
{
    AudioClient = await music_channel.ConnectAsync();
    output = AudioClient.CreatePCMStream(AudioApplication.Music);
}

А вот мой код воспроизведения:

public void playmusik(MemoryStream ws)
    {
        Task.Run(() =>
        {
            WaveStream blockAlignedStream = new RawSourceWaveStream(ws, new Mp3WaveFormat(44100, 2, 627, 192000));

            while (true)
            {
                blockAlignedStream.CopyTo(output);
                //OnGetMessage(ws.Length.ToString() + " " + ws.Capacity.ToString() + " " + blockAlignedStream.Length);

            }
        });

}

MemoryStream захватывает данные и растет, поэтому что-то должно быть внутри, ноон не воспроизводится внутри DiscordBot.

...