流式音频(YouTube)
我正在为一个音乐媒体平台写一个命令行界面(CLI)。其中一个功能是可以直接从命令行播放YouTube视频。我其实不太清楚怎么做,但这个想法听起来最合理:
我打算使用一些可以从YouTube下载音乐的网站,比如 http://keepvid.com/
,然后直接流式播放这些音乐。不过我遇到了一个问题。有没有什么Python库可以做到这一点?如果有的话,你能给我一些具体的例子吗?
我一直在找,但什么都没找到,甚至连 GStreamer 也没找到。
2 个回答
看起来 KeepVid 其实就是一个JavaScript书签小工具,它会把你带到一个KeepVid的下载页面,在那里你可以选择各种格式下载YouTube视频。所以,如果你不想去弄清楚如何播放它链接到的文件,那就不太容易实现。你需要抓取返回的页面,找出你想下载的那个网址,然后从那个网址进行播放(而且有些格式可能根本就不能播放)。
另外,虽然他们没有明确的服务条款,但我想因为他们主要是靠广告支持的,所以如果你绕过他们的广告页面去使用他们的功能,这在道德上可能就不太合适了。
要下载YouTube视频,你需要两个东西:一个是视频的ID,这个ID在网址中用 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=