在繼續(xù)使用 yt-dlp 之前,強烈建議您安裝FFmpeg和FFProbe。雖然是“可選”依賴項,幾乎是“強制”依賴的,因為很多視頻下載后會涉及到拼接、音視頻合并、轉(zhuǎn)碼、內(nèi)嵌字幕、格式轉(zhuǎn)換,這些就需要結(jié)合ffmpeg。linux與macos下,一般可以直接用包管理器直接安裝(pacman/apt/yum/homebrew), windows可以從ffmpeg官網(wǎng)下載頁下載,下載安裝后記得要把 ffmpeg命令所在的目錄加至環(huán)境變量PATH中。
下載和安裝 yt-dlp 相對容易,但學(xué)習(xí)如何正確使用它可能需要一些時間, yt-dlp 是命令行工具,沒有“漂亮”的前端 GUI讓很多人望而卻步,但它的下載功能卻是非常強大的。
關(guān)于yt-dlp的使用網(wǎng)絡(luò)上有很多教程,具體的使用方法可以參考官方教程,小編這里只介紹幾個常用的例子。
yt-dlp --list-formats video_url
以下載B站《Big Buck Bunny》的視頻為例
yt-dlp --list-formats https://www.bilibili.com/video/BV1DT4y1z7a1
資源文件如下
[info] Available formats for BV1DT4y1z7a1_p2:
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR
───────────────────────────────────────
0 m4a audio only │ ≈ 5.21MiB 67k https │ audio only mp4a.40.2 67k
1 m4a audio only │ ≈10.29MiB 133k https │ audio only mp4a.40.2 133k
2 m4a audio only │ ≈12.53MiB 162k https │ audio only mp4a.40.2 162k
3 mp4 640x360 30 │ ≈27.19MiB 351k https │ avc1.64001E 351k video only
4 mp4 852x480 30 │ ≈62.46MiB 806k https │ avc1.64001F 806k video only
下載的時候默認會下載所支持的最高清的視頻,如果要指定分辨率,可以用 -S res: 加上對應(yīng)P數(shù),如1080、720、480、360,這里下載360P的。
yt-dlp https://www.bilibili.com/video/BV1DT4y1z7a1 -S res:360
如果輸入的下載鏈接是一個合集,默認就會批量把合集中的視頻都下載下來,比如現(xiàn)在下載的這個是包含兩個視頻的合集,默認就全下載了。
下載時,在沒有登錄的情況下,有些視頻網(wǎng)站的高清視頻會下載不了,此時,可以用瀏覽器登錄該視頻網(wǎng)站,在下載時添加--cookies-from-browser加對應(yīng)的瀏覽器名為參數(shù)來下載,就可以下載了。
先列出所有支持的資源文件
yt-dlp --list-formats https://www.bilibili.com/video/BV1DT4y1z7a1 --cookies-from-browser firefox
結(jié)果如下:
yt-dlp --list-formats https://www.bilibili.com/video/BV1DT4y1z7a1 --cookies-from-browser firefox
[info] Available formats for BV1DT4y1z7a1_p1:
ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR
──────────────────────────────────────────
0 m4a audio only │ ≈ 5.21MiB 67k https │ audio only mp4a.40.2 67k
1 m4a audio only │ ≈ 10.28MiB 133k https │ audio only mp4a.40.2 133k
2 m4a audio only │ ≈ 12.53MiB 162k https │ audio only mp4a.40.2 162k
3 mp4 640x360 29 │ ≈ 27.46MiB 354k https │ avc1.64001E 354k video only
4 mp4 852x480 29 │ ≈ 61.33MiB 792k https │ avc1.64001F 792k video only
5 mp4 1280x720 29 │ ≈136.09MiB 1757k https │ avc1.640028 1757k video only
6 mp4 1920x1080 29 │ ≈203.57MiB 2628k https │ avc1.640032 2628k video only
可見登錄后出現(xiàn)有720P、1080P分辨率的視頻,如個是VIP,還會出現(xiàn)更高清的視頻。
下載1080P的資源,并播放,視頻信息如下:

--sub-langs zh-Hans: 選擇下載字幕,zh-Hans為中文簡體--embed-subs: 字幕內(nèi)嵌至視頻中,軟字幕--write-thumbnail: 下載縮略圖--convert-thumbnails jpg: 轉(zhuǎn)換縮略圖為jpg格式的--write-info-json: 下載資源信息--dateafter yesterday: 資源為合集時,可以過濾最近的視頻,如只下今天的-I 1:5: 資源為合集時,選擇性下載,此處為下載前5個-o "%(title).210B [%(id)s].%(ext)s": 文件名格式,具體參考輸出文件名模板,此出的%(title).210B為取title的前210字節(jié),以防止文件過長錯誤如果你使用Kodi、Emby、Jelleyfin等播放器或媒體服務(wù),下載的一些視頻可能不能正常的刮削,但yt-dlp可以把視頻的信息下載下:--write-info-json,但下載后的專有json文件不支持刮削,可以用一個python工具-ytdl-nfo將該文件轉(zhuǎn)換成所支持刮削的nfo文件,通過--write-thumbnail下載縮略圖也會成為視頻的封面。
ytdl-nfo安裝可以用pip命令: pip install ytdl-nfo,單文件轉(zhuǎn)換可以在ytdl-nfo命令后直接加文件名,轉(zhuǎn)換整個文件夾中的.info.json文件。
#轉(zhuǎn)換單文件
ytdl-nfo great_video.info.json
#轉(zhuǎn)換當前目錄中所有
ytdl-nfo .
-END-
作者|dev2ex 保貝狗后端開發(fā)工程師

