下载 youtube 视频。为什么它很难,我如何下载它?

Downloading youtube video. Why it is hard and how can I download it?

我在某处读到,youtube 将视频分成许多短文件,并且在播放时将它们拼接在一起。这使得下载视频变得困难。

我在想,一定有办法破解它并下载所有类型的视频,甚至直播视频。

任何人都可以指点我一些文档或代码等,这解释了我如何做到这一点。我想在 ubuntu 机器上完成。

我很好奇有些网站是怎么做到的?

另一种选择是全屏播放视频并使用某些屏幕录像机进行录制。但这将需要一台专用机器来执行此操作。有什么建议吗?

'youtube-dl' 程序(您在问题的标签中提到)为您完成所有这一切 - 它查找、下载所有文件并将其拼接在一起,并输出一个视频文件。您应该获取最新版本,而不是使用您的发行版提供的版本(发行包可能已过时)。

它是 'difficult' 因为 Google 不希望它变得简单 - 视频的发布者将它上传到 youtube 以供观看,而不是下载并可能在其他地方播放,所以采取措施来执行这一点。除了发布者的权利,如果文件可以在没有广告的情况下观看,Google 也将失去。

(顺便说一句:过去,内容作者实际上可以明确允许下载,将下载 link 添加到视频页面 - 我不知道现在是否仍然如此)。

理论上,总有办法 'hack' 它,从某种意义上说,您的浏览器可以做的任何事情都可以在不显示视频的情况下完成,而是保存它(例如,您可以得到整个浏览器源代码并修改它来执行此操作 - 结果将包含所有广告等,与显示的完全一样)。虽然可行,但已经够困难了——而且不是一个值得实现的目标。

Youtube-dl 知道网站自己的 javascript 是如何工作的,并且 模仿 它 - 但它实际上 运行 没有任何实际的 youtube 代码,所以它必须随着 youtube 的更新而更新。因此,它总是有点过时,有些视频不会下载。

不要滥用 Youtube,Google 不会善待这一点。最好不要尝试下载比您在给定时间内实际观看的视频更多的视频 - youtube 会检测到这一点并要求您解决验证码难题以证明您不是试图大量下载内容的机器人(并最终可能会完全阻止你)。

以防有人遇到同样的问题。我有一个 YouTube 视频无法使用 youtube-dl 或我能找到的任何其他工具下载。

我在 Ubuntu 上用过这个:

livestreamer --retry-streams 1 https://www.youtube.com/watch?v=YOUTUBE_VIDEO_CODE best -o output.m3u8
ffmpeg -i output.m3u8 -acodec copy -vcodec copy output.mp4

这也适用于实时视频。

这些是工具:

https://docs.livestreamer.io/

https://ffmpeg.org/