youtube-dl
Youtube-dl 简称视频下载利器。同事 是一个命令行工具,对我所知的大部分视频网站有不错的支持,你可以选择下载视频,或是将视频流直接导出到自己想使用的播放器中,也可以以JSON的形式获取可下载资源的URL
安装Youtube-dl
Youtube-dl 通过 PyPi 分发,如果你的系统安装有 pip3 或 pip ,请直接使用:
brew install youtube-dl
安装Youtube-dl
通过 Youtube-dl 下载视频十分简洁,例如你需要下载 youtube-dl 'https://www.bilibili.com/video/av80476263'/ 直接这样:
youtube-dl 'https://www.bilibili.com/video/av80476263'
终端输出
[BiliBili] 80476263: Downloading webpage
[BiliBili] 80476263: Downloading video info page
[BiliBili] 80476263: Downloading webpage
[BiliBili] 80476263: Downloading video info page
[download] Destination: 2019总结1.flv
[download] 0.0% of 32.61MiB at Unknown speed [download] 0.0% of 32.61MiB at Unknown speed [download] 0.0% of 32.61MiB at 3.29MiB/s ETA[download] 0.0% of 32.61MiB at 421.13KiB/s ET[download] 0.1% of 32.61MiB at 798.04KiB/s ET[download] 0.2% of 32.61MiB at 848.61KiB/s ET[download] 0.4% of 32.61MiB at 1.13MiB/s ETA[download] 0.8% of 32.61MiB at 1.62MiB/s E
查看视频的内容,只看不下载
youtube-dl -F 'https://www.bilibili.com/video/av80476263'
使用代理下载
youtube-dl 提供了使用代理的参数,你可以简单地shadow socket 在设置查看地址填入:
youtube-dl --proxy 127.0.0.1:1087 'https://www.youtube.com/watch?v=ghDOA4TeOQE'
查看帮助文档
youtube-dl -h
原理:
现在主流视频网站大部分都不是真实的mp4路径,而是一个M3U8地址。
- m3u8 文件实质是若跟个TS为文件, 一个播放列表playlist。其内是 utf-8 纯文本文件。
- 选择TS存储 而不是 MP4存储呢?这是因为两个 TS 片段可以无缝拼接,播放器能连续播放,而 MP4 文件由于编码方式的原因,两段 MP4 不能无缝拼接,播放器连续播放两个 MP4 文件会出现破音和画面间断,影响用户体验。
- 每次播放根据列表文件中的时间轴找出对应的 TS 片段下载即可,不需要 range request,对代理服务器的要求小很多。所有代理服务器都支持小文件的高效缓存。
网友评论