尝试通过语音通道播放 youtube 音频时 C# discord bot 未知操作码 8

Posted

技术标签:

【中文标题】尝试通过语音通道播放 youtube 音频时 C# discord bot 未知操作码 8【英文标题】:C# discord bot unknown opcode 8 when attempting to play youtube audio through voice channel 【发布时间】:2017-12-30 17:08:55 【问题描述】:

我目前正在开发一个 C# discord.net 1.0.0 discord 机器人,我试图添加一个命令,允许机器人通过语音聊天播放 youtube 音频,但是,当机器人加入语音聊天并尝试播放音频,我的控制台刚刚返回:

16:57:42 Audio #1    Connecting
16:57:42 Audio #1    Unknown OpCode (8)
16:57:42 Audio #1    Connected

如果有人告诉我去 discord api,我已经去过那里,他们对我个人帮助不大 但是,我的代码是:

using System.Threading.Tasks;
using Discord.Commands;
using Discord;
using Discordbot;
using System.Diagnostics;
using Discord.Audio;
using System;

public class AudioModule : ModuleBase<ICommandContext>

private readonly Audioservice _service;
public static IAudioClient client;
private Process CreateStream(string url)

    Process currentsong = new Process();
    try
    
        currentsong.StartInfo = new ProcessStartInfo
        
            FileName = "youtube-dl.exe",
            Arguments = $"-o - url | ffmpeg -i pipe:0 -ac 2 -f s16le -ar 
 48000 pipe:1",
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        ;
    
    catch
    
    
    currentsong.Start();
    return currentsong;
     
 [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);
    await output.CopyToAsync(stream);
    await stream.FlushAsync().ConfigureAwait(false);
    

   

【问题讨论】:

您在这里使用外壳(您使用管道等)... 【参考方案1】:

OpCode 8 是网关Request Guild Members 请求。发生 Unkown OpCode 8 的事实无论如何都不会妨碍您的机器人播放音乐,并且可以放心地忽略。

您可能想要检查您的流程是否正常运行

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

【讨论】:

以上是关于尝试通过语音通道播放 youtube 音频时 C# discord bot 未知操作码 8的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 播放音频文件错误

YouTube 视频在 WebView Android 中仅在屏幕旋转时播放音频

iOS:静音右声道音量

在 Elementor 中加载 youtube 视频时暂停音频播放器

discord.js 不播放音频文件

尝试在 ASIO 输出上使用 NAudio 播放音频时的空引用