2024-10-17 yt-dlp

yt-dlp安装:[如果下载卡在某个库,可以尝试换源]

brew install yt-dlp

自己单独安装下ffmpeg:  brew install ffmpeg ,这样下载的时候不指定格式id的话可以自动下载支持的最高分辨率的视频。


1. 查看支持的网站列表

youtube-dl --list-extractors #查看支持网站列表

youtube-dl -U #程序升级

2.  查看视频所有的可下载音视频格式

yt-dlp -F [url] --cookies-from-browser chrome

输出如下:(每一行第一位是id,后面有分辨率,格式等信息)

137 mp4 1920x1080 24 │ 51.82MiB 1831k https │ avc1.640028 1831k video only 1080p, mp4_dash

614 mp4  1920x1080  24    │ ~ 65.53MiB 2310k m3u8  │ vp09.00.40.08 2310k video only

248 webm  1920x1080  24    │  31.99MiB 1130k https │ vp09.00.40.08 1130k video only          1080p, webm_dash

616 mp4  1920x1080  24    │ ~136.24MiB 4802k m3u8  │ vp09.00.40.08 4802k video only          Premium

下载包含的指定id的视频:

yt-dlp [url] --cookies-from-browser chrome -f 137

3. 下载其他支持网站的视频 

yt-dlp  [url]  --cookies-from-browser chrome

有一些网站(比如b站)添加了 --cookies-from-browser chrome 可以获得更高的可下载视频格式哦。

可以批量下载合集。

4. webm无损转换mp4

ffmpeg -i input.webm -c:v copy -c:a copy output.mp4

5. 只要音频

很简单,添加-x参数即可只下载音频,添加--audio-format mp3就可以把下载下来的当音频视频转码为mp3,所以你如果喜欢某个Up的视频,但是只想下载声音:

yt-dlp -x  --audio-format mp3 [url]

下载过程中出现ssl错误,违反协议的要去掉代理,或者切换别的国家代理。

6. 指定最高质量下载

yt-dlp -f bestvideo+bestaudio [url]

这种语法会自动下载质量最高的音视频文件并进行合并(前提是安装了 ffmpeg )。

bestvideo 形式默认会自动选择 webm 格式,因此我们可以使用下面的语法指定如果没有 mp4 格式的视频文件的话再选择 webm 视频文件:

-f bestvideo[ext=mp4]/bestvideo[ext=webm]+bestaudio

对于音频文件也是一样的,可以指定优选选择 m4a 还是 webm 的音频文件(默认选择 webm):

-f bestvideo[ext=mp4]/bestvideo[ext=webm]+bestaudio[ext=m4a]/bestaudio[ext=webm]

bestvideo[ext=mp4]:  这样写识别有错误,mark下,以后再看。


最好质量的音频和视频格式文件合并后转成mp4格式输入:

yt-dlp -f bestvideo+bestaudio --merge-output-format mp4 -o "%(title)s.%(ext)s"  [url]


下载固定分辨率的视频:

yt-dlp -f "bestvideo[height<=1080]+bestaudio" --cookies-from-browser chrome https://www.bilibili.com/bangumi/play/ep785549\?spm_id_from\=333.337.0.0\&from_spmid\=666.25.episode.0


使用yt-dlp 批量下载Bilibili (B站) 视频的方法是将视频的URL 列表保存在一个文本文件中,然后使用yt-dlp 以该文件作为输入进行批量下载。

yt-dlp -a urls.txt


限制文件大小:(参看https://www.lifenghua.cn/archives/aybZZ5rD)

# 下载最佳视频(同时带有音频),但大小不超过50MB

# 如果没有50MB以下的视频,则下载最差的视频(同时带有音频)

$ yt-dlp -f "b[filesize<50M] / w"

# 下载最大的视频(同时带有音频),但不超过50MB

# 如果没有50MB以下的视频,则下载最小的视频(同时带有音频)

$ yt-dlp -f "b" -S "filesize:50M"

# 下载大小最接近50MB的最佳视频(同时带有音频)

$ yt-dlp -f "b" -S "filesize~50M"



7. 音视频文件合并

有时候使用了bestvide+bestaudio会得到两个音视频文件:

bestvide.mp4

bestaudio.m4a

遇到这种情况不用担心,我们可以使用 ffmpeg 手动执行下合并,命令如下:

ffmpeg -i bestvide.mp4 -i bestaudio.m4a -c:a copy -c:v copy output.mp4

其中 bestvide.mp4 就是你下载后的视频文件,bestaudio.m4a 是你下载后的音频文件,而最后的 output.mp4 就是你合并之后输出的文件了。

8 下载youtube列表

这样会自动下载播放列表中的全部视频,另外也可以使用 --playlist 相关参数下载播放列表指定起始位置:

--playlist-start NUM            下载播放列表起始位置, 默认1

--playlist-end NUM              下载播放列表结束位置, 默认 last

--playlist-items ITEM_SPEC      下载播放列表里的特定选集. 如 --playlist-items 1,3,5,7-10, 就会下载 1,3,5,7,8,9,10 集

Note

在下载播放列表指定集之前可以先使用 -F 参数看下有哪些选集

9 断点续传

。。。

更新:

使用--cookies-from-browser , 报错。

WARNING: failed to decrypt cookie because UTF-8 decoding failed. Possibly the key is wrong?

解决方案:

https://github.com/yt-dlp/yt-dlp/issues/6564

https://github.com/yt-dlp/yt-dlp/issues/6564#issuecomment-2384694762

https://github.com/yt-dlp/yt-dlp/commit/4613096f2e6eab9dcbac0e98b6cec760bbc99375#diff-c042473d560a04c6fd504c3cb3ae2c9a56a27e42458132a265a3ffda0d60a5c7

要修改的源码本地地址:➜ ~ /usr/local/Cellar/yt-dlp/2024.10.7/libexec/lib/python3.13/site-packages/yt_dlp/cookies.py

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容