­

youtube-dl命令參考

  • 2019 年 10 月 6 日
  • 筆記

youtube-dl 命令參數簡譯

USAGE:

youtube-dl [OPTIONS] URL [URL...]

OPTIONS:

通用選項

-h, --help                       列印幫助文檔  --version                        列印版本資訊  -U, --update                     更新到最新版(需要許可權)  -i, --ignore-errors              遇到下載錯誤時跳過  --abort-on-error                 遇到下載錯誤時終止  --dump-user-agent                顯示當前使用的瀏覽器(User-agent)  --list-extractors                列出所有的提取器(支援的網站)  --extractor-descriptions         同上  --force-generic-extractor        強制使用通用提取器下載  --default-search PREFIX          使用此前綴補充不完整的URLs,例如:"ytsearch2 yt-dl" 從youtube搜索並下載兩個關於yt-dl影片. 使用"auto"youtube-dl就會猜一個,一般效果等價於"ytsearch"("auto_warning"猜測時加入警告).我已知支援的PREFIX:ytsearch (youtube), ytsearchdate (youtube), yvsearch (yahoo videos), gvsearch (google videos)  --ignore-config                  不讀取配置文件,當時用了全局配置文件/etc/youtube-dl.conf:不再讀取 ~/.config/youtube-dl/config (%APPDATA%/youtube-dl/config.txt on Windows)  --config-location PATH           使用指定路徑下的配置文件  --flat-playlist                  列出列表影片但不下載  --mark-watched                   標記看過此影片 (YouTube only)  --no-mark-watched                不標記看過此影片 (YouTube only)  --no-color                       列印到螢幕上的程式碼不帶色

網路選項

--proxy URL                      使用HTTP/HTTPS/SOCKS協議的代理.如:socks5://127.0.0.1:1080/.  --socket-timeout SECONDS         放棄連接前等待時間  --source-address IP              綁定的客戶端IP地址  -4, --force-ipv4                 所有連接通過IPv4  -6, --force-ipv6                 所有連接通過IPv6

地理限制

--geo-verification-proxy URL     使用此代理地址測試一些有地理限制的地址  --geo-bypass                     繞過地理限制通過偽裝X-Forwarded-For HTTP頭部的客戶端ip (實驗)  --no-geo-bypass                  不 繞過地理限制通過偽裝X-Forwarded-For HTTP頭部的客戶端ip (實驗)  --geo-bypass-country CODE        強制繞過地理限制通過提供準確的ISO 3166-2標準的國別程式碼(實驗) 註:以上三個實驗參數實測未成功

影片選擇

--playlist-start NUMBER          指定列表中開始下載的影片(默認為1)  --playlist-end NUMBER            指定列表中結束的影片(默認為last)  --playlist-items ITEM_SPEC       指定列表中要下載的影片項目編號.如:"--playlist-items 1,2,5,8"或"--playlist-items 1-3,7,10-13"  --match-title REGEX              下載標題匹配的影片(正則表達式或區分大小寫的字元串)  --reject-title REGEX             跳過下載標題匹配的影片(正則表達式或區分大小寫的字元串)  --max-downloads NUMBER           下載NUMBER個影片後停止  --min-filesize SIZE              不下載小於SIZE的影片(e.g. 50k or 44.6m)  --max-filesize SIZE              不下載大於SIZE的影片(e.g. 50k or 44.6m)  --date DATE                      僅下載上傳日期在指定日期的影片  --datebefore DATE                僅下載上傳日期在指定日期或之前的影片 (i.e. inclusive)  --dateafter DATE                 僅下載上傳日期在指定日期或之後的影片 (i.e. inclusive)  --min-views COUNT                不下載觀影數小於指定值的影片  --max-views COUNT                不下載觀影數大於指定值的影片  --match-filter FILTER            通用影片過濾器. Specify any key (see help for -o for a list of available keys) to match if the key is present, !key to check if the key is not present, key > NUMBER (like "comment_count > 12", also works with >=, <, <=, !=, =) to compare against a number,key = 『LITERAL『 (like "uploader = 『Mike Smith『", also works with !=) to match against a string literal and & to require multiple matches. Values which are not known are excluded unless you put a question mark (?) after the operator. For example, to only match videos that have been liked more than 100 times and disliked less than 50 times (or the dislike functionality is not available at the given service), but who also have a description, use --match-filter "like_count > 100 & dislike_count <? 50 & description" .  --no-playlist                    當影片鏈接到一個影片和一個播放列表時,僅下載影片  --yes-playlist                   當影片鏈接到一個影片和一個播放列表時,下載影片和播放列表  --age-limit YEARS                下載合適上傳年限的影片  --download-archive FILE          僅下載檔案文件中未列出的影片,已下載的記錄ID  --include-ads                    同時下載廣告(實驗)

下載選項

-r, --limit-rate RATE            最大bps (e.g. 50K or 4.2M)  -R, --retries RETRIES            重試次數 (默認10), or "infinite".  --fragment-retries RETRIES       一個分段的最大重試次數(default is 10), or "infinite" (DASH, hlsnative and ISM)  --skip-unavailable-fragments     跳過不可用分段(DASH, hlsnative and ISM)  --abort-on-unavailable-fragment  放棄某個分段當不可獲取時  --keep-fragments                 下載完成後,將下載的片段保存在磁碟上; 片段默認被刪除  --buffer-size SIZE               設置緩衝區大小buffer (e.g. 1024 or 16K) (default is 1024)  --no-resize-buffer               不自動調整緩衝區大小.默認情況下自動調整  --playlist-reverse               以相反的順序下載播放列表影片  --playlist-random                以隨機的順序下載播放列表影片  --xattr-set-filesize             Set file xattribute ytdl.filesize with expected file size (experimental)  --hls-prefer-native              使用本機默認HLS下載器而不是ffmpeg  --hls-prefer-ffmpeg              使用ffmpeg而不是本機HLS下載器  --hls-use-mpegts                 使用TS流容器來存放HLS影片,一些高級播放器允許在下載的同時播放影片  --external-downloader COMMAND    使用指定的第三方下載工具,當前支援:aria2c,avconv,axel,curl,ffmpeg,httpie,wget  --external-downloader-args ARGS  給第三方下載工具指定參數,如:--external-downloader aria2c --external-downloader-args -j8

文件系統選項

-a, --batch-file FILE            文件中包含需要下載的URL  --id                             僅使用文件名中的影片ID  -o, --output TEMPLATE            Output filename template, see the "OUTPUT TEMPLATE" for all the info  --autonumber-start NUMBER        指定%(autonumber)s的起始值(默認為1)  --restrict-filenames             將文件名限制為ASCII字元,並避免文件名中的「&」和空格  -w, --no-overwrites              不要覆蓋文件  -c, --continue                   強制恢復部分下載的文件。 默認情況下,youtube-dl僅在可能時將恢復下載。  --no-continue                    不要恢復部分下載的文件(從頭開始重新啟動)  --no-part                        不使用.part文件 - 直接寫入輸出文件  --no-mtime                       不使用Last-modified header來設置文件最後修改時間  --write-description              將影片描述寫入.description文件  --write-info-json                將影片元數據寫入.info.json文件  --write-annotations              將影片注釋寫入.annotations.xml文件  --load-info-json FILE            包含影片資訊的JSON文件(使用「--write-info-json」選項創建)  --cookies FILE                   文件從中讀取Cookie(經測試,export cookies插件可以使用,但firebug導出的cookies導致錯誤,chrome下請用cookies.txt)注意:不同平台windows、Linux、OSX之間需要轉換CE LF才能使用!  --cache-dir DIR                  文件存儲位置。youtube-dl需要永久保存一些下載的資訊。默認為$XDG_CACHE_HOME/youtube-dl或/.cache/youtube-dl。目前,只有YouTube播放器文件(對於具有模糊簽名的影片)進行快取,但可能會發生變化。  --no-cache-dir                   不用快取  --rm-cache-dir                   刪除所有快取文件

縮略圖

--write-thumbnail                把縮略圖寫入硬碟  --write-all-thumbnails           將所有縮略圖寫入磁碟  --list-thumbnails                列出所有可用的縮略圖格式

詳細/模擬選項

-q, --quiet                      激活退出模式  --no-warnings                    忽略警告  -s, --simulate                   不下載不存儲任何文件到硬碟,模擬下載模式  --skip-download                  不下載影片  -g, --get-url                    模擬下載獲取影片直連  -e, --get-title                  模擬下載獲取標題  --get-id                         模擬下載獲取id  --get-thumbnail                  模擬下載獲取縮略圖URL  --get-description                模擬下載獲取影片描述  --get-duration                   模擬下載獲取影片長度  --get-filename                   模擬下載獲取輸出影片文件名  --get-format                     模擬下載獲取輸出影片格式  -j, --dump-json                  模擬下載獲取JSON information.  -J, --dump-single-json           模擬下載獲取每條命令行參數的JSON information.如果是個播放列表,就獲取整個播放列表的JSON  --print-json                     下載的同時獲取影片資訊的JSON  --newline                        進度條在新行輸出  --no-progress                    不列印進度條  --console-title                  在控制台標題欄顯示進度  -v, --verbose                    列印各種調試資訊  --dump-pages                     列印下載下來的使用base64編碼的頁面來調試問題(非常冗長)  --write-pages                    將下載的中間頁以文件的形式寫入當前目錄中以調試問題  --print-traffic                  顯示發送和讀取HTTP流量  -C, --call-home                  聯繫youtube-dl伺服器進行調試  --no-call-home                   不聯繫youtube-dl伺服器進行調試

解決方法

--encoding ENCODING              強制指定編碼(實驗)  --no-check-certificate           禁止HTTPS證書驗證  --prefer-insecure                使用未加密的連接來檢索有關影片的資訊(目前僅支援YouTube)  --user-agent UA                  指定user agent  --referer URL                    指定自定義的referer,僅限影片來源於同一網站  --add-header FIELD:VALUE         指定一個自定義值的HTTP頭文件,使用分號分割,可以多次使用此選項  --bidi-workaround                圍繞缺少雙向文本支援的終端工作。需要在PATH中有bidiv或fribidi可執行文件  --sleep-interval SECONDS         在每次下載之前休眠的秒數,或者每次下載之前的隨機睡眠的範圍的下限(最小可能的睡眠秒數)與-max-sleep-interval一起使用。  --max-sleep-interval SECONDS     每次下載前隨機睡眠範圍的上限(最大可能睡眠秒數)。只能與--min-sleep-interval一起使用。

影片格式選項

-f, --format FORMAT              影片格式程式碼,查看"FORMAT SELECTION"獲取所有資訊  --all-formats                    獲取所有影片格式  --prefer-free-formats            開源的影片格式優先,除非有特定的請求  -F, --list-formats               列出請求影片的所有可用格式  --youtube-skip-dash-manifest     不要下載關於YouTube影片的DASH清單和相關數據  --merge-output-format FORMAT     如果需要合併(例如bestvideo + bestaudio),則輸出到給定的容器格式。mkv,mp4,ogg,webm,flv之一。如果不需要合併,則忽略

字幕選項

--write-sub                      下載字幕文件  --write-auto-sub                 下載自動生成的字幕文件 (YouTube only)  --all-subs                       下載所有可用的字幕  --list-subs                      列出所有字幕  --sub-format FORMAT              字幕格式,接受格式偏好,如:"srt" or "ass/srt/best"  --sub-lang LANGS                 要下載的字幕的語言(可選)用逗號分隔,請使用--list-subs表示可用的語言標籤

驗證選項

-u, --username USERNAME          使用ID登錄  -p, --password PASSWORD          賬戶密碼,如果此選項未使用,youtube-dl將互動式地詢問。  -2, --twofactor TWOFACTOR        雙因素認證碼  -n, --netrc                      使用.netrc認證數據  --video-password PASSWORD        影片密碼(vimeo, smotri, youku)

Adobe Pass 選項

--ap-mso MSO                     Adobe Pass多系統運營商(電視提供商)標識符,使用--ap-list-mso列出可用的MSO  --ap-username USERNAME           MSO帳號登錄  --ap-password PASSWORD           賬戶密碼,如果此選項未使用,youtube-dl將互動式地詢問。  --ap-list-mso                    列出所有支援的MSO

後處理選項

-x, --extract-audio              將影片文件轉換為純音頻文件(需要ffmpeg或avconv和ffprobe或avprobe)  --audio-format FORMAT            指定音頻格式: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "best" by default;-x存在時無效  --audio-quality QUALITY          指定ffmpeg/avconv音頻品質,為VBR插入一個0(best)-9(worse)的值(默認5),或者指定比特率  --recode-video FORMAT            必要時將影片轉碼為其他格式(當前支援: mp4|flv|ogg|webm|mkv|avi)  --postprocessor-args ARGS        給後處理器提供這些參數  -k, --keep-video                 影片文件在後處理後保存在磁碟上; 該影片默認被刪除  --no-post-overwrites             不要覆蓋後處理文件; 默認情況下,後處理文件將被覆蓋  --embed-subs                     在影片中嵌入字幕(僅適用於mp4,webm和mkv影片)  --embed-thumbnail                將縮略圖嵌入音頻作為封面藝術  --add-metadata                   將元數據寫入影片文件  --metadata-from-title FORMAT     從影片標題中解析附加元數據,如歌曲標題/藝術家。格式語法和--output相似.也可以使用帶有命名捕獲組的正則表達式。解析的參數替換現有值。Example: --metadata-from-title "%(artist)s - %(title)s" matches a title like "Coldplay - Paradise". Example (regex): --metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"  --xattrs                         將元數據寫入影片文件的xattrs(使用dublin core 和 xdg標準)  --fixup POLICY                   自動更正文件的已知故障。never(不做警告), warn(只發出警告), detect_or_warn (默認;如果可以的話修復文件,否則警告)  --prefer-avconv                  後處理時相較ffmpeg偏向於avconv  --prefer-ffmpeg                  後處理優先使用ffmpeg  --ffmpeg-location PATH           ffmpeg/avconv程式位置;PATH為二進位所在文件夾或者目錄.  --exec CMD                       在下載後對文件執行命令,類似於find -exec語法.示例:--exec『adb push {} /sdcard/Music/ && rm {}『  --convert-subs FORMAT            轉換字幕格式(當前支援: srt|ass|vtt)

本地配置

您可以通過將任何支援的命令行選項放置到配置文件來配置 youtube-dl。在 Linux 和 OS X 上,系統範圍的配置文件位於 /etc/youtube-dl.conf,用戶範圍的配置文件位於 ~/.config/youtube-dl/config。在Windows上,用戶範圍的配置文件位置是 %APPDATA%youtube-dlconfig.txt 或 C:Users&lt;user name>youtube-dl.conf。請注意,默認情況下,配置文件可能不存在,所以您可能需要自己創建它。

例如,使用如下配置文件,youtube-dl 將始終只提取音頻,不使用文件上次使用時間來設置文件最後修改時間,使用代理下載並保存所有輸出到用戶主目錄下的 Movies 文件夾下

# Lines starting with # are comments  # Always extract audio  -x  # Do not copy the mtime  --no-mtime  # Use this proxy  --proxy 127.0.0.1:3128  # Save all videos under Movies directory in your home directory  -o ~/Movies/%(title)s.%(ext)s

請注意,配置文件中的選項與常規命令行中所調用的選項(又名 switches)相同,因此在 - 或者 -- 後面不得包含空格,例如 -o--proxy 不能寫成 - o 或者 -- proxy

你可以使用 --ignore-config 來禁用配置文件,也可以使用 --config-location 啟用自定義配置文件

輸出模板

-o 選項允許用戶指定輸出文件名稱的模板。

基本用法下載一個文件時,就像在沒有設置任何模板參數 youtube-dl -o funny_video.flv "https://some/video"。 但是,它可能包含下載每個影片時將被替換的特殊序列。特殊序列可以根據python字元串格式化操作來格式化。例如,%(NAME)s或者%(NAME)05d。為了澄清,這是一個百分號,後面跟著一個名字,然後是格式化操作。允許的名稱和序列類型如下:

id (字元串):                     影片標識符  title (字元串):                  影片標題  url (字元串):                    影片網址  ext (字元串):                    影片文件擴展名  alt_title (字元串):              影片的次要標題  display_id (字元串):             影片的替代標識符  uploader (字元串):               影片上傳器的全名  license (字元串):                影片許可的許可證名稱  creator (字元串):                影片的創建者  release_date (字元串):           影片發布時的日期(YYYYMMDD)  timestamp (數字):                影片可用時的UNIX時間戳  upload_date (字元串):            影片上傳日期(YYYYMMDD)  uploader_id (字元串):            影片上傳器的昵稱或ID  location (字元串):               影片被拍攝的物理位置  duration (數字):                 以秒為單位的影片長度  view_count (數字):               有多少用戶在該平台上觀看過影片  like_count (數字):               影片的正面評級的數量  dislike_count (數字):            影片的負面評級的數量  repost_count (數字):             影片的轉貼次數  average_rating (數字):           用戶給出的平均評分,使用的比例取決於網頁  comment_count (數字):            影片上的評論數量  age_limit (數字):                影片年齡限制(年)  is_live (布爾值):                這個影片是一個實時流還是一個固定長度的影片  start_time (數字):               按照URL中的指定開始複製的時間(以秒為單位)  end_time (數字):                 按照URL中的指定,結束複製的時間(以秒為單位)  format (字元串):                 格式的可讀描述  format_id (字元串):              指定的格式程式碼 --format  format_note (字元串):            關於格式的附加資訊  width (數字):                    影片的寬度  height (數字):                   影片的高度  resolution (字元串):             寬度和高度的文本描述  tbr (數字):                      音頻和影片的平均比特率,以KBit / s為單位  abr (數字):                      以KBit / s為單位的平均音頻比特率  acodec (字元串):                 正在使用的音頻編解碼器的名稱  asr (數字):                      以赫茲為單位的音頻取樣率  vbr (數字):                      以KBit / s為單位的平均影片比特率  fps (數字):                      幀率  vcodec (字元串):                 正在使用的影片編解碼器的名稱  container (字元串):              容器格式的名稱  filesize (數字):                 如果預先知道的話,位元組數  filesize_approx(數字):           位元組數的估計值  protocol (字元串):               將用於實際下載的協議  extractor (字元串):              提取器的名稱  extractor_key (字元串):          提取器的鍵名  epoch (數字):                    創建文件時的Unix紀元  autonumber (數字):               從零開始,每次下載將增加的五位數字  playlist (字元串):               包含影片的播放列表的名稱或ID  playlist_index (數字):           根據播放列表的總長度填充前導零的播放列表中的影片索引  playlist_id (字元串):            播放列表標識符  playlist_title (字元串):         播放列表標題  playlist_uploader (字元串):      播放列表上傳者的全名  playlist_uploader_id (字元串):   播放列表上傳者的昵稱或ID

可用於屬於某個邏輯章節或部分的影片:

chapter (字元串):                影片所屬章節的名稱或標題  chapter_number (數字):           影片所屬章節的編號  chapter_id (字元串):             影片所屬章節的ID

可用於某個系列或節目的情節的影片:

series (字元串):                 該影片片段所屬的系列或節目的標題  season (字元串):                 影片劇集所屬季節的標題  season_number (數字):            影片片段屬於的季節的數量  season_id (字元串):              影片片段屬於的季節的ID  episode (字元串):                影片片段的標題  episode_number (數字):           一個季節內的影片片段的數量  episode_id (字元串):             影片情節的ID

適用於音樂專輯的音軌或音樂專輯的媒體:

track (字元串):                  曲目的標題  track_number (數字):             專輯或光碟中的曲目編號  track_id (字元串):               軌道的Id  artist (字元串):                 曲目的藝術家  genre (字元串):                  曲目的類型  album (字元串):                  曲目所屬專輯的標題  album_type (字元串):             相冊的類型  album_artist (字元串):           專輯中出現的所有藝術家列表  disc_number (數字):              軌道所屬的光碟或其他物理介質的編號  release_year (數字):             發行專輯時的年(YYYY)

在輸出模板中引用的每個上述序列都將被與序列名稱對應的實際值替換。請注意,某些序列不能保證存在,因為它們依賴於特定提取器獲得的元數據。這樣的序列將被替換為NA。

例如,對於-o %(title)s-%(id)s.%(ext)s帶有標題youtube-dl test video和ID 的mp4影片BaW_jenozKcj,這將導致在youtube-dl test video-BaW_jenozKcj.mp4當前目錄中創建一個文件。 對於數字序列,您可以使用與數字相關的格式,例如,%(view_count)05d將導致視圖計數的字元串填充最多5個字元的零,如in 00042。

輸出模板還可以包含任意的分層路徑,例如-o '%(playlist)s/%(playlist_index)s – %(title)s.%(ext)s',這將導致下載與該路徑模板相對應的目錄中的每個影片。任何丟失的目錄將自動為您創建。 要在輸出模板使用使用%的文字%%。輸出到標準輸出使用-o -。 當前的默認模板是%(title)s-%(id)s.%(ext)s。

在某些情況下,您不需要特殊字元(如中,空格或&),例如通過8位不安全通道將下載的文件名傳送到Windows系統或文件名時。在這些情況下,添加–restrict-filenames標誌以獲得較短的標題: 輸出模板和Windows批處理文件

如果您在Windows批處理文件中使用輸出模板,那麼您必須%通過加倍來避免普通的百分號字元(),所以-o "%(title)s-%(id)s.%(ext)s"應該成為-o "%%(title)s-%%(id)s.%%(ext)s"。但是你不應該碰到%不是普通字元的東西,例如擴展的環境變數應該保持不變-o "C:%HOMEPATH%Desktop%%(title)s.%%(ext)s"。