Audio 在python 3.7中,有没有一种方法可以使用youtube dl或pafy库直接从youtube视频流式传输音频?

Audio 在python 3.7中,有没有一种方法可以使用youtube dl或pafy库直接从youtube视频流式传输音频?,audio,stream,buffer,youtube-dl,pafy,Audio,Stream,Buffer,Youtube Dl,Pafy,我不想一次又一次地从youtube视频下载音频,而是想流式传输音频并直接从缓冲区访问原始音频字节。换句话说,我希望将原始音频字节存储在RAM中,并在python脚本中使用它们,而无需在系统上完全下载和保存音频文件,以减少内存写入周期。youtube dl library或pafy library中是否有类似的解决方法?是的,有,我刚刚了解了它的工作原理。 在重写中,您可以使用discord.FFmpegPCMAudio(url)来完成此操作。您必须记住,您放入discord.FFmpegPCMA

我不想一次又一次地从youtube视频下载音频,而是想流式传输音频并直接从缓冲区访问原始音频字节。换句话说,我希望将原始音频字节存储在RAM中,并在python脚本中使用它们,而无需在系统上完全下载和保存音频文件,以减少内存写入周期。youtube dl library或pafy library中是否有类似的解决方法?

是的,有,我刚刚了解了它的工作原理。 在重写中,您可以使用discord.FFmpegPCMAudio(url)来完成此操作。您必须记住,您放入discord.FFmpegPCMAudio()的url不是您可以从浏览器复制的YouTube链接。 您可以从以下代码中获得一个巨大的json字典,其中包含“真实”url:

# Get a json library with general video information, as well as the url we need to stream the audio.

with youtube_dl.YoutubeDL(ydl_opts) as ydl:
     song_info = ydl.extract_info("https://www.youtube.com/watch?v=INPUTYTLINKHERE", download=False)
如果需要,您可以打印song_信息以查看有关视频的更多信息,如浏览量、喜好等:

print(song_info)
最后的代码是:(我在_消息(message)上使用@client和async def)

我希望这说明了这一点

# The "real" url is in song_info["formats"][0]["url].

message.guild.voice_client.play(discord.FFmpegPCMAudio(song_info["formats"][0]["url"]))
message.guild.voice_client.source = discord.PCMVolumeTransformer(message.guild.voice_client.source)
message.guild.voice_client.source.volume = 1