使用Google Chrome Dev Tools下载/查找和流媒体播放Youtube视频

9
我希望通过使用Google Chrome Dev Tools从YouTube下载/提取视频。当我检查元素时,在Dev Tools中看到以下内容:
<video tabindex="-1" class="video-stream html5-main-video" controlslist="nodownload" style="width: 1004px; height: 753px; left: 0px; top: 0px;" src="blob:https://www.youtube.com/db4f4abe-c290-4e61-a904-68435fdd9933"></video>  

我已经尝试了进入“网络” -> 搜索.mp4和.flv,但没有显示任何内容。
如何使用Dev工具下载?此外,是否有一种方法可以获取视频链接并在新选项卡中仅播放视频?
感谢您的帮助。

1
那个Blob URL是虚拟的。它是由MediaSource API生成的,因此在其他地方无法使用。您需要获取原始的视频/音频块并将它们馈送到兼容的js播放器库中。可能已经有解决方案了。否则,您将不得不自己反向工程YouTube的方法。 - wOxxOm
有没有办法获取原始块?我能用Youtube API做些什么吗(尽管我对API不太熟悉)? - sam9750
我试着在那里找,但没有运气。谢谢。 - sam9750
不确定你所谓的“没有运气”是什么意思。这是我看到的https://puu.sh/Czsnu/c5fdd674a8.png,下一步是调查代码,看看这些URL是如何生成和使用的。 - wOxxOm
抱歉,我实际上关闭了我的问题中的那个Youtube视频窗口,所以我不再有那个特定视频的URL,因为我不记得是哪个视频了。除了网络选项卡之外,URL在哪里生成? - sam9750
显示剩余3条评论
1个回答

24

是的,这是可能的(也许不合法),但我想解释一下技术部分(请注意,我不会从YouTube下载视频,因为它总是存在于云上!)。

YouTube通过bytearrays传输流,如果你检查一个清晰的url,它不存在。但是:如果你查看开发工具并跟踪网络,你可以找到这个url。

看一下这张图片:enter image description here

YouTube将流以单独的通道传输,并在运行时将其全部组合起来,使用XMLHttpRequest分别获取视频和音频。

所有以videoplayback?开头的调用都与视频/音频流有关。 videoplayback? Ajax调用总是成对出现:以某种顺序的content-type= audio/*content-type= video/*

你可以从标头中区分它们(在图像中看起来像content-type= video/*content-type= audio/*)

要获取完整的音频/视频流,唯一需要做的就是更改RANGE参数。

参数RANGE指定要流式传输的内容段(通常不是整个媒体,因为那样就不会流式传输,并避免来自技术人员的下载)

复制以 videoplayback? 开头的 URL (如图所示)。

在查询字符串末尾找到参数 range=。参数 range= 由 START 和 END 组成(例如,range=18096-20098),用“-”分隔。

将 START 设为 0,将 END 设为一个较大的数字,如 9999999999(例如,range=0-999999999999)。(编辑注:我猜这些是视频的“秒”时间戳)

修改 URL 后,在新标签页中粘贴并打开它,您就可以轻松下载音频或视频了。

获取两个流,并在一些音频/视频编辑软件中将它们合并在一起(例如 NUENDO)。

重要提示:不要更改其他参数,因为这是一个自验证 URL。


嗨,@dantechguy编辑。感谢您提供并编辑了我的答案,使其更好的英文表达。请注意,您的注释不是关于时间,而是文件所占用的字节数。保持安全;)Gent - G3nt_M3caj
2
那么下载管理器和其他网站如何生成包含音频和视频的官方谷歌链接呢? - ttvd94
在 Stack Overflow 上开一个新的问题,解释你的疑问(如上所述),那么我相信,你可能会得到答案。上面的答案与 OP 的问题有关。 - G3nt_M3caj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接