日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

youtube-dl 使用小记

發布時間:2023/12/15 综合教程 39 生活家
生活随笔 收集整理的這篇文章主要介紹了 youtube-dl 使用小记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.官網地址

youtube-dl官網:https://yt-dl.org/
項目地址:https://github.com/rg3/youtube-dl

1.文檔簡略翻譯,具體請以官方文檔為準

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 Options:
    --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)

2.安裝python

youtube-dl使用Python編寫的工具,所以系統里沒有Python的話,先安裝Python。youtube-dl需要Python 2.6以上的版本。

Ubuntu:

sudo apt-get install python2.7

CentOS:(一般CentOS6以上會自帶Python,如果沒有Python的話,就按照以下方法安裝下)

yum install -y python python-devel

3.下載youtube-dl

下載地址:https://github.com/rg3/youtube-dl/releases
請下載releases里的
將下載回來的壓縮包解壓,不會解壓的請百度,這里不再贅述

4.安裝ffmpeg

FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。它提供了錄制、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec
安裝細則請見:《CentOS中yum安裝ffmpeg》
如果您想編譯安裝的話,請參考官網:https://ffmpeg.org/download.html

5.用法

使用幫助命令查看其用法:

youtube-dl -h

一些常用的參數:

youtube-dl --list-extractors #查看支持網站列表
youtube-dl -U #程序升級
youtube-dl --get-format URL #獲取視頻格式
youtube-dl -F URL #獲取所有格式(目前僅支持YouTube),例如:

youtube-dl -F http://www.youtube.com/watch?v=n-BXNXvTvV4
 Setting language
 n-BXNXvTvV4: Downloading video webpage
 n-BXNXvTvV4: Downloading video info webpage
 n-BXNXvTvV4: Extracting video information
Available formats:
37      :       mp4     [1080x1920]
46      :       webm    [1080x1920]
22      :       mp4     [720x1280]
45      :       webm    [720x1280]
35      :       flv     [480x854]
44      :       webm    [480x854]
34      :       flv     [360x640]
18      :       mp4     [360x640]
43      :       webm    [360x640]
5       :       flv     [240x400]
36      :       3gp     [240x320]
17      :       3gp     [144x176]
137     :       mp4     [1080p] (DASH Video)
136     :       mp4     [720p] (DASH Video)
135     :       mp4     [480p] (DASH Video)
134     :       mp4     [360p] (DASH Video)
133     :       mp4     [240p] (DASH Video)
160     :       mp4     [192p] (DASH Video)
141     :       mp4     [256k] (DASH Audio)
172     :       webm    [256k] (DASH Audio)
140     :       mp4     [128k] (DASH Audio)
171     :       webm    [128k] (DASH Audio)
139     :       mp4     [48k] (DASH Audio)

youtube-dl -f format URL #下載指定格式的視頻,這里以下載1080p原畫質量的視頻格式為例:

youtube-dl -f 137 http://www.youtube.com/watch?v=n-BXNXvTvV4

6.代理

推薦使用SS代理。非全局模式,請在命令后面加 --proxy 'socks5://127.0.0.1:1080' (1080是端口號,我的端口是1080,您的端口請按照您自己設置的填寫)

例如:youtube-dl --proxy 'socks5://127.0.0.1:1080' [URL]

注:2016年4月以前的版本是不支持socks代理的,具體過程請見:https://github.com/rg3/youtube-dl/issues/402

7.下載YouTube視頻

1) 查看視頻所有類型,只看不下載
youtube-dl -F [url]
或者
youtube-dl --list-formats [url]

這是一個列清單參數,執行后并不會下載視頻,但能知道這個目標視頻都有哪些格式存在,這樣就可以有選擇的下載啦!

8.關于音頻和視頻的合并

下載指定質量的視頻和音頻并自動合并
youtube-dl -f [format code] [url]

通過上一步獲取到了所有視頻格式的清單,最左邊一列就是編號對應著不同的格式.
由于YouTube的1080p及以上的分辨率都是音視頻分離的,所以我們需要分別下載視頻和音頻,可以使用137+140這樣的組合.
如果系統中安裝了ffmpeg的話, youtube-dl 會自動合并下下好的視頻和音頻, 然后自動刪除單獨的音視頻文件

9.下載字幕

youtubd-dl --write-sub [url] //這樣會下載一個vtt格式的英文字幕和mkv格式的1080p視頻下來
youtube-dl --write-sub --skip-download [url] //下載單獨的vtt字幕文件,而不會下載視頻
youtube-dl --write-sub --all-subs [url] //下載所有語言的字幕(如果有的話)
youtube-dl --write-auto-sub [url] //下載自動生成的字幕(YouTube only)

youtube-dl --list-subs [url] //列出所有可用字幕

10.關于youtube的字幕接口

獲取所有語言的字幕列表:'http://video.google.com/timedtext?hl=en&v=hRfHcp2GjVI&type=list'
獲取字幕,在視頻有官方字幕的情況下:'http://www.youtube.com/api/timedtext?lang=%s&v=%s&name=%s'

「上傳字幕」和「機器字幕」是不互相「兼容」的,有「上傳字幕」的視頻是沒有「機器字幕」的,當然一個視頻也可能「上傳字幕」和「機器字幕」都沒有

11.webvtt字幕轉srt字幕方法

簡單使用方法(僅限于載入字幕播放使用)

直接修改后綴名:直接將*.vtt文件的后綴名改為*.srt。然后刪除最前方的類型標識符:WEBVTT,保存即可載入srt字幕正常使用。

專業轉換方式

專業的事情請交給專業的工具,不要想當然地簡化成一個找規律的問題

第一步,安裝 ffmpeg

第二步,執行 `ffmpeg -i source.en.vtt target.en.srt`

參考:Get subtitles from Youtube in SRT format - Gary Sieling

附上知乎討論貼:https://www.zhihu.com/question/29789259

12.直接使用youtube-dl轉字幕的方法

youtube-dl 自帶一個--convert-subs FORMAT 參數。

具體用法見例子:

youtube-dl -f 137+140  --convert-subs "srt" --all-subs https://www.youtube.com/watch?v=hRfHcp2GjVI

需要注意的是,不能帶上--skip-download 參數。

詳見:https://github.com/rg3/youtube-dl/issues/9073

13.下載視頻列表

youtube-dl -f [format code] [palylist_url] //這種方式可以下載制定清晰度的mp4視頻
youtube-dl [playlist_url] //下載視頻列表,這種方式下載的視頻可能是mkv格式或者webm格式
youtube-dl -cit [playlist_url] //下載視頻列表,這種方式下載的視頻可能是mkv格式或者webm格式
youtube-dl --yes-playlist [url] //當鏈接為視頻列表,則下載該列表視頻,跟上面的一樣,可能是mkv或者webm格式

youtube-dl支持的網站很多,大家可以從作者整理的這個列表里查看支持的網站(不過由于有的網站接口改變,可能當初支持的網站現在不能很好的支持了),如果您要下載的視頻網站現在不能用youtube-dl下載的,不妨試試另外一個同樣基于Python開發的下載工具You-Get

You-Get 官網:https://you-get.org/

You-Get項目地址:https://github.com/soimort/you-get

總結

以上是生活随笔為你收集整理的youtube-dl 使用小记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。