我尝试在Discord中播放MemoryStream。与Discord和AudioChannel的连接均正常。我使用NAudio和DataAvailable事件捕获数据。现在,我尝试将数据从MemoryStream转换为WaveStream并将数据发送到DiscordBot。 这是NAudio类的DataVAilable代码(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中播放它。