Discord bot在加入后立即离开语音通道

时间:2017-07-22 15:02:40

标签: c# ffmpeg discord youtube-dl discord.net

我正在为我的不和谐服务器构建一个机器人来播放音频YouTube视频,因为我还没有在网上找到可靠的机器人。

我输入!play {url}命令后,僵尸程序连接到我的语音通道,但即使URL有效,也会立即离开。

我的代码如下:

[Command("play", RunMode = RunMode.Async)]
public async Task play(string url) {
    IVoiceChannel channel = (Context.User as IVoiceState).VoiceChannel;
    IAudioClient client = await channel.ConnectAsync();

    var output = CreateStream(url).StandardOutput.BaseStream;
    var stream = client.CreatePCMStream(AudioApplication.Music, 128 * 1024);
    output.CopyToAsync(stream);
    stream.FlushAsync().ConfigureAwait(false);
}

private Process CreateStream(string url) {
    Process currentsong = new Process();

    currentsong.StartInfo = new ProcessStartInfo {
        FileName = "cmd.exe",
        Arguments = $"/C youtube-dl -o - {url} | ffmpeg -i pipe:0 -ac 2 -f s16le -ar 48000 pipe:1",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    };

    currentsong.Start();
    return currentsong;
}

我尝试使用ffmpeg在我的电脑上使用硬编码的文件,但我得到了相同的结果,机器人在连接后立即离开语音频道。

我确实通过在cmd窗口中运行命令来验证ffmpeg和youtube-dl都正常工作,并且它们都运行良好。

1 个答案:

答案 0 :(得分:2)

ffmpeg不是语音的唯一要求。您需要Discord使用的语音编码和加密库。我建议加入Discord API服务器内的Discord.Net频道,我们总是在这里回答这些问题,以及我们拥有大量资源的地方,例如这些库的预编译版本所在的链接。

https://discord.gg/discord-api 频道是#dotnet_discord-net