安装
我的使用环境是 macOS,使用 pip 安装。
pip3 install yt-dlp |
之后查看版本
yt-dlp --version |
在我开启系统代理的情况下,我可以直接使用它,它会自动走代理。
如果把代理关掉,再来使用它,自然连接不上。会出现这样的警告。
WARNING: [youtube] Unable to download webpage: (<urllib3.connection.HTTPSConnection object at 0x10788cb10>, 'Connection to www.youtube.com timed out. (connect timeout=20.0)') |
使用
获取视频的结构(就是看它有哪些分辨率,哪些音频),使用大写的 F
yt-dlp -F https://www.youtube.com/xxxxxxxxxxxxxxxxx |
不加任何参数(也就是上面的命令去掉 -F
),会自动下载质量最高的视频和音频,然后将它们合并起来。
yt-dlp https://www.youtube.com/xxxxxxxxxxxxxxxxx |
当然我们也可以自由选择,例如我们不需要那么高分辨率的视频,我只要 720P 就够了之类的。那么可以序号相加的方式,例如
yt-dlp -f 251+614 https://www.youtube.com/xxxxxxxxxxxxxxxxx |
下载音频
我个人有这样的需要,想要下载视频的音频部分。所以我了解到有这样的参数,-x
参数,可以用来提取音频。
不过我发现这样是把完整的视频下载之后,再从视频中把音频提取出来。然后再删除掉视频……
感觉不环保,我明明不需要视频部分,它下载之后只保留音频,再删掉视频……
当然也有只下载音频的方法,先用 -F
查询信息,然后选择想要的音频 id 就行,例如
yt-dlp -f 251 https://www.youtube.com/xxxxxxxxxxxxxxxxx |
但是这样也比较麻烦,得先查询嘛。于是继续了解,发现可以使用 -f ba
,也就是 best audio 的首字母缩写,只下载质量最好的音频。
不过这样有时候下载的音频是 webm 格式的。
我观察了一个视频
233 mp4 audio only │ m3u8 │ audio only unknown Default |
只看它音频部分,其实质量最高的应该是 140 m4a audio only 2 │ 10.51MiB 129k
这个才对,不管是文件体积还是码率,它都是最大的。
但实际上使用 ba 参数,下载的是最高一项 webm 这个。难道是因为它是 48K 而上面的 m4a 是 44k 的?
那么我添加一个限制,排除掉 webm
yt-dlp -f 'bestaudio/best' --format 'bestaudio[ext!=webm]' |
这样后面再加上视频链接即可。
然后我再写一个 alias,之后我只需要 「ya 视频链接」,就能下载一个视频的音频了。
alias ya="yt-dlp -f 'bestaudio/best' --format 'bestaudio[ext!=webm]'" |