所以目前我让我的 disord 机器人使用此代码从文件路径播放音频
var transmit = vnc.GetTransmitSink();
var pcm = ConvertAudioToPcm(filepath);
await pcm.CopyToAsync(transmit);
Console.WriteLine(duration);
}
private Stream ConvertAudioToPcm(string filePath)
{
var ffmpeg = Process.Start(new ProcessStartInfo
{
FileName = "ffmpeg",
Arguments = $@"-i ""{filePath}"" -ac 2 -f s16le -ar 48000 pipe:1",
RedirectStandardOutput = true,
UseShellExecute = false
});
return ffmpeg.StandardOutput.BaseStream;
}
使用 YoutubeExplode,我可以从 URL 获取流,但是当我 CopyToAsync 时,我在不和谐机器人上得到非常响亮的静电。有人知道如何使用 ffmpeg 从 youtube URL 正确流式传输音频吗?先感谢您
编辑:让它使用此代码创建 PCM 流,但它不使用 youtube 爆炸,它使用 youtube-dl.exe
private Stream ConvertURLToPcm(string url)
{
string args = $"/C youtube-dl --ignore-errors -o - {url} | ffmpeg -err_detect ignore_err -i pipe:0 -ac 2 -f s16le -ar 48000 pipe:1";
var ffmpeg = Process.Start(new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = args,
RedirectStandardOutput = true,
UseShellExecute = false
});
return ffmpeg.StandardOutput.BaseStream;
}