流式音频 (YouTube)
Posted
技术标签:
【中文标题】流式音频 (YouTube)【英文标题】:Streaming audio (YouTube) 【发布时间】:2011-02-22 11:56:47 【问题描述】:我正在为音乐媒体平台写CLI。其中一项功能是您可以直接从 CLI 播放 YouTube 视频。我真的不知道该怎么做,但这个听起来最合理:
我将使用那些可以从 YouTube 下载音乐的网站,例如 http://keepvid.com/
,然后我直接流式传输并播放它,但我有一个问题。是否有任何 Python 库能够做到这一点,如果有,你有具体的例子吗?
我一直在寻找,但我什么也没找到,即使是 GStreamer 也没有。
【问题讨论】:
【参考方案1】:KeepVid 似乎只是一个 javascript 书签,它将您链接到 KeepVid 下载页面,然后您可以在该页面下载各种格式中的任何一种的 YouTube 视频。因此,除非您想弄清楚如何流式传输它链接到的文件,否则这并不容易。您必须抓取返回的页面并确定要下载的 URL,然后您必须从该 URL 流式传输(并且某些格式可能是流式传输的,也可能不是流式传输的)。
顺便说一句,即使他们没有指定服务条款,我想由于他们似乎主要是广告支持的,因此通过浏览他们的广告支持的网页来滥用他们的功能是合乎道德的有问题。
【讨论】:
好吧,我只是以 KeepVid 为例,如果有更好的网站我会很高兴听到的。【参考方案2】:您需要两个东西才能下载 YouTube 视频,一个是视频 ID,它由 URL 的 v=
部分表示,另一个是隐藏字段 t=
,它存在于页面源中。我不知道这个t
值是什么,但它是你需要的:)
然后您可以使用格式中的 URL 下载视频;
http://www.youtube.com/get_video?video_id=*******&t=*******
星星代表获得的值。
我猜您可以从用户输入中询问视频 ID,因为它很容易获得。然后,您的程序将下载该视频的 html 源,解析 t
值的源,然后使用新构建的 URL 下载视频。
例如,如果您在浏览器中打开此链接,它应该会下载视频,或者您可以使用Wget等下载程序;
http://www.youtube.com/get_video?video_id=3HrSN7176XI&t=vjVQa1PpcFNM4c8MbEhsnGaNvYKoYERIJ-hK7ErLpUI=
【讨论】:
我很确定 YouTube 阻止了这种获取他们视频的方式,你也尝试过你给自己举的例子吗? 是的。昨晚对我来说效果很好,但现在不起作用。我猜视频的位置变了…… 您在网站的源文件中究竟在哪里找到“t=***”?我试着搜索它,但并没有真正找到任何看起来像那样的东西。 打开源代码并搜索&t=
。在我尝试过的返回一个或两个结果的页面上,其中任何一个都是您正在寻找的值。它位于确定视频来源的 Javascript 函数中。
我认为这不再有效......(我仍然可以在源代码中看到一个 t 值 - 但像上面那样将它放在一起不起作用)以上是关于流式音频 (YouTube)的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的应用程序上仅流式传输来自 youtube 视频的音频数据?
如何从 Python 中的 Youtube URL 流式传输音频(无需下载)?
尝试从 youtube 视频流式传输音频时,DiscordJS v13 AudioPlayer 卡在缓冲上
使用url从python流传输youtube音频而无需下载python