1

所以目前我让我的 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;
    }
4

0 回答 0