使用 FFMPEG 流式传输 YouTube 音频的示例

Posted

技术标签:

【中文标题】使用 FFMPEG 流式传输 YouTube 音频的示例【英文标题】:Example of streaming YouTube audio using FFMPEG 【发布时间】:2020-06-15 07:05:13 【问题描述】:

我想使用 FFMPEG 将 YouTube 音频流式传输到另一个来源

using (var ffmpeg = CreateProcess(track.GetUrl()))
using (var stream = client.CreatePCMStream())

    try  await ffmpeg.StandardOutput.BaseStream.CopyToAsync(stream); 
    finally  await stream.FlushAsync(); 

CreateProcess() 看起来像这样:

private Process CreateProcess(string url)

    return Process.Start(new ProcessStartInfo
    
        FileName = "ffmpeg.exe",
        Arguments = $"-hide_banner -loglevel panic -i \"url\" -ac 2 -f s16le -ar 48000 pipe:1",
        UseShellExecute = false,
        RedirectStandardOutput = true
    );

url 代表 YouTube 视频网址。 client 代表 Discord 音频客户端,我要将流复制到该客户端。 我正在使用 Discord.Net(最新稳定版)。

参数似乎不正确,因为没有播放并且没有返回此类异常。

【问题讨论】:

您在使用 Discord.Net,The arguments do not seem to be correct. 的指标是什么?有没有错误? 【参考方案1】:

我会将YoutubeExplode 与CliWrap 结合使用;

var youtube = new YoutubeClient();
var streamManifest = await youtube.Videos.Streams.GetManifestAsync("...");
var streamInfo = streamManifest.GetAudioOnly().WithHighestBitrate();
await using var input = await youtube.Videos.Streams.GetAsync(streamInfo);

await using var output = client.CreatePCMStream();

var cmd = input | Cli.Wrap("ffmpeg").WithArguments("-i pipe:0 ...") | output;
await cmd.ExecuteAsync();

【讨论】:

以上是关于使用 FFMPEG 流式传输 YouTube 音频的示例的主要内容,如果未能解决你的问题,请参考以下文章

将 pi 的 opencv 视频传输到 ffmpeg 以进行 Youtube 流式传输

如何使用 ffmpeg 将实时 m3u8 文件流式传输到 youtube rtmp

sh 通过ffmpeg将视频流式传输到youtube

sh 通过ffmpeg将视频流式传输到youtube

如何从 Python 中的 Youtube URL 流式传输音频(无需下载)?

如何在我的应用程序上仅流式传输来自 youtube 视频的音频数据?