2017-07-22 7 views
0

オンラインで信頼できるボットを見つけられなかったので、私のディスカードサーバーのボットをオーディオ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; 
} 

私はハードにコーディングされた私のPC上のファイルをffmpegの使用しようとしているが、私は同じ結果を持っていたし、ボットはできるだけ早く音声チャネルを残しましたそれはつながった。

私は、ffmpegとyoutube-dlの両方がcmdウィンドウでコマンドを実行することで動作していて、どちらも正常に動作していることを確認しました。

答えて

2

ffmpegは音声の唯一の要件ではありません。 Discordが使用する音声エンコードおよび暗号化ライブラリが必要です。 Discord APIサーバー内のDiscord.Netチャンネルに参加することをお勧めします。これは、これらの質問に答えるための場所です。また、事前にコンパイルされたバージョンのライブラリへのリンクなど。

https://discord.gg/discord-api チャンネル#1 dotnet_discordネット

+0

で申し訳ありませんが、私は図書館を持っていることを言及するのを忘れてしまいました! – Forb

関連する問題