使用 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