[软件]youtube-dl 命令行下载1200+网站视频图片等 + 改进版 yt-dlp

date
Feb 3, 2022
slug
newsoftware-youtube-dl
status
Published
summary
新软件 不只是youtube
tags
software
type
Post
URL

Summary

安装过程

# mac
brew install youtube-dl 
brew upgrade youtube-dl

# linux
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

使用 - 断网还能自动重试

alias

alias ydl-best="youtube-dl -f 'bestvideo+bestaudio[ext=m4a]' --merge-output-format mp4  "
alias ydl-best100m="youtube-dl -f 'bestvideo[filesize<100M]+bestaudio[ext=m4a]' --merge-output-format mp4 --sub-lang en,zh-Hans --write-sub --embed-subs "

下载youtube

# 最常用
youtube-dl -f mp4 https://www.youtube.com/watch?v=pP0Ed1G9qPo
youtube-dl -f best https://www.youtube.com/watch?v=iJvr0VPsn-s
# best 选择最佳质量的音/视频文件
# worst 选择质量最差的格式(视频和音频)
# bestvideo 选择最佳质量的仅视频格式(例如DASH视频),可能无法使用。
# worstvideo 选择质量最差的纯视频格式,可能无法使用。
# bestaudio 选择最优质的音频格式,可能无法使用。 要以最佳质量仅下载音频
# worstaudio 选择质量最差的音频格式,可能无法使用。
### 分别下载, 并自动合并(通过调用ffmpeg)
youtube-dl -f 'bestvideo+bestaudio' https://www.youtube.com/watch?v=iJvr0VPsn-s
### 分别下载最高质量的仅视频和最高质量的纯音频格式,再用 ffmpeg 或 avconv 合并成一个最佳质量的 mkv 文件;如果您不想合并,请将 + (加号)替换为 , (逗号)即可分别得到最高质量的音频和视频(两个文件),如下所示:
youtube-dl -f 'bestvideo,bestaudio' https://www.youtube.com/watch?v=iJvr0VPsn-s
### 对下载的大小做限制
youtube-dl --max-filesize 100M <playlist_url>
youtube-dl --min-filesize 100M <playlist_url>
### 以下命令将下载最佳视频格式但不大于 100MB 的视频
youtube-dl -f 'best[filesize<100M]' https://www.youtube.com/watch?v=iJvr0VPsn-s


### 當合併輸出格式為 mp4 時,音訊如果是 webm 格式合併時會出現錯誤,要指定為 m4a 或其他格式才能自動合併成功。
youtube-dl -f 'bestvideo+bestaudio[ext=m4a]' --merge-output-format mp4 https://www.youtube.com/watch?v=y5wkebBCwAE

youtube-dl -o 'A REAL Back to School Laptop Guide.mp4' https://www.youtube.com/watch?v=pP0Ed1G9qPo
youtube-dl -o '%(title)s by %(uploader)s on %(upload_date)s in %(playlist)s.%(ext)s' https://www.youtube.com/watch?v=iJvr0VPsn-s

# Download YouTube playlist videos in separate directory indexed by video order in a playlist
$ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re

# only download new ones in a playlist
### only the first time
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
### will download the complete PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re playlist and create a file archive.txt. 
### Each subsequent run will only download new videos if any:
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"


# 可以将要下载视频的 URL 全部放在文本文件中,并将其作为参数传递给 Youtube-dl 也行:
# 将下载 url.txt 文件中所有 URL 指向的视频
youtube-dl -a url.txt



# 只下载音频,不下载视频 (默认是是ogg格式)
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=iJvr0VPsn-s


### 下载在特定日期或之前上传的视频:  和之后 和当天
youtube-dl --datebefore 20190801 <URL>
youtube-dl --dateafter 20190101 <URL>
youtube-dl --date 20190801 <URL>
### 仅下载过去 6 个月内上传的视频:
youtube-dl --dateafter now-6months <URL>
### 下载特定时间段内(例如 201811 日至 201911 日)上传的视频
youtube-dl --dateafter 20180101 --datebefore 20190101 <URL>

合并字幕

# 查看支持的字幕
youtube-dl --list-subs https://www.youtube.com/watch?v=-NeRIrRSFs4

# 下载中文并合并
youtube-dl --sub-lang zh-Hans --write-sub --embed-subs -f mp4 https://www.youtube.com/watch?v=-NeRIrRSFs4

# 我想下載正體中文和日文的字幕,並合併到影片中可以這樣寫:
youtube-dl --sub-lang zh-TW,ja --write-sub --embed-subs https://www.youtube.com/watch?v=y5wkebBCwAE

# 想將字幕存成 srt 格式,加上 --convert-subs srt
youtube-dl --sub-lang zh-TW,ja --write-sub --convert-subs srt https://www.youtube.com/watch?v=y5wkebBCwAE

配合Aria2进行多线程下载

brew install aria2
# 16线程,块大小1M
youtube-dl https://www.youtube.com/watch?v=6Lc-FuX9FYo --external-downloader aria2c --external-downloader-args "-x 16 -k 1M"
 

配合Axel进行多线程下载

brew install axel
# 16线程
youtube-dl https://www.youtube.com/watch?v=6Lc-FuX9FYo --external-downloader axel --external-downloader-args "-n 16"

yt-dlp youtube-dl的fork改进版

brew install yt-dlp


alias ytdl-audio="yt-dlp -f 'ba' -x --audio-format mp3"
alias ytdl-video="yt-dlp -f 'bv[ext=mp4] +ba[ext=m4a]/best[ext=mp4]/best'"
alias twitch-download="yt-dlp --downloader aria2c --downloader-args aria2c:'-c -j 32 -s 32 -x 16 --file-allocation=none --optimize-concurrent-downloads=true --http-accept-gzip=true"

# lways works, when it doesn't, just upgrade yt-dlp and 99.99% it's fixed. It's reliable, fast and flexible when you need it to.

© Ying Bun 2021 - 2024