目录
yt-dlp是一个命令行程序,可在youtube、twitch、bilbili、西瓜视频等一千多个网站下载视频资源1。国内平台的解析工具已经存在很多,像you-get之类,我们主要用它来下载海外视频。
作为youtube-dl的增补版,yt-dlp有着比起前辈更快的速度,以及众多新特性。本文仅记录win10系统python环境下的跑通方法。在尝试前,先确保本地存在3.7+的python版本,推荐安装ffmpeg、ffprobe等依赖,以方便视频合并、转码等后续处理。
官方项目地址:https://github.com/yt-dlp/yt-dlp
本文仅作学习记录,如有错误欢迎提出,持续更新。
下载youtube视频的前提是自由访问,默认读到本文的应该都已实现科学访问了~
没有的同学请先行寻找合适的加速器
打开命令行输入:
pip install yt-dlp
速度慢可以更换pip镜像源,或在pypi下载离线安装
这里的FFmpeg指二进制文件,而非同名的python包,其中包含了ffmpeg、ffprobe、ffplay三大工具。
访问网址:https://www.gyan.dev/ffmpeg/builds
全文搜索CTRL+F找到ffmpeg-release-full.7z这个安装包,点击下载
解压到本地目录中,打开bin文件夹,地址栏复制本地路径
计算机右键【属性】-> 【高级系统设置】->【高级】-> 【环境变量】-> 【用户变量】
双击Path,新建一条,在变量值里粘贴复制的路径

WIN+R 输入cmd,命令行中测试一下,输入ffmpeg回车,出现下图类似结果安装成功

在想要保存的目录下打开命令行(地址栏输入cmd回车),按照如下格式书写命令:
yt-dlp [OPTIONS] [--] URL [URL...]
yt-dlp必须在前,OPTIONS和URL填写不分先后
基础用法示例:
# --proxy 使用指定的HTTP/HTTPS/SOCKS代理。 e.g. socks5://user:pass@127.0.0.1:1080/
# 127.0.0.1表示本机ip,1080表示当前使用的端口,请根据本机情况查询并更改,见3.2
# URL填写想下载的视频地址
# 下载单个视频
yt-dlp --proxy socks5://127.0.0.1:1080 https://www.youtube.com/watch?v=NtKJSHW68p4
# 下载播放列表的所有视频
yt-dlp --proxy socks5://127.0.0.1:1080 https://www.youtube.com/playlist?list=PLqWr7dyJNgLJ79otw7N9CXQ_AU0Fm04aq
点右下角网络图标进入【网络和Internet设置】,选择【代理】
找到【使用设置脚本】,开启
检查命令中的ip和端口和【脚本地址】是否一致
根据使用需求,追加命令参数,体验yt-dlp的丰富玩法,具体见项目自述,也可在命令行输入yt-dlp --help查看说明
yt-dlp [--proxy ...] URL -F
yt-dlp [--proxy ...] URL --list-formats

对图中的标题做一下阅读理解:
| ID | EXT | RESOLUTION | FPS | CH | FILESIZE | TBR | PROTO |
|---|---|---|---|---|---|---|---|
| 编码 | 扩展名 | 分辨率(宽x高) | 每秒画面帧数 | 音频通道数 | 文件字节数 | 音频和视频的平均比特率(KBit) | 下载协议 (http, https, rtsp, rtmp, rtmpe, mms, f4m, ism, http_dash_segments, m3u8, or m3u8_native) |
| VCODEC | VBR | ACODEC | ABR | ASR | MORE INFO |
|---|---|---|---|---|---|
| 视频编码方案 | 平均视频码率(KBit) | 音频编码方案 | 平均音频码率(KBit) | 音频采样率(hz) | 补充说明 |
含义:格式选择器,根据要求下载指定格式的音视频资源
说明:未传参时,默认下载最佳质量的格式。按特定要求下载时,写明视频和音频的格式要求。支持单独下载纯视频/音频,合并下载用"+“连接,各自分开下载用”,“,从左到右选择第一个可用资源下载用”/"
示例:
# 根据id,下载编号597的资源作为视频画面,599作为视频声音,把图像和音轨合并为MP4格式导出
yt-dlp -f 597+599 [--proxy ...] URL --merge-output-format mp4
# 下载编码为22的文件
yt-dlp -f webm [--proxy ...] URL
# 下载最佳质量的单个webm文件(目前支持3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm格式)
yt-dlp -f webm [--proxy ...] URL
# 分开下载视频和音频,格式化命名,按title.ID.EXT模板输出
yt-dlp -f "bv,ba/b" -o "%(title)s.f%(format_id)s.%(ext)s" [--proxy ...] URL
# 条件过滤,通过表格中的各项条件筛选目标规格的资源
-f w # 下载质量最差的资源文件(同时包含音视频),wv纯视频,wa纯音频,适合测试命令时使用
-f "best[height=720]" # 筛选最佳质量的720p视频
-f "[filesize>10M]" # 筛选>10M的文件
-f "all[vcodec=none]" # 筛选所有纯音频
-f "(mp4,webm)[height<480]" # 筛选低于480p的最佳mp4视频和webm音轨,合并
-f 'bv[height=1080][ext=mp4]+ba[ext=m4a]' --merge-output-format mp4 # 筛选1080p的mp4视频,与最佳的m4a音频下载合并
yt-dlp [--proxy ...] URL --list-subs # 列出所有支持的字幕信息(语言标识名、语言名、文件格式)
下图列出的字幕使用--write-subs下载

下图的字幕使用--write-auto-subs下载
# 下载视频时一同下载srt格式的中文字幕,--sub-lang后的值从图中的Langeuage列取得
yt-dlp --write-auto-subs --sub-format srt --sub-lang zh-Hans [--proxy ...] URL
# 单独下载最佳格式的英文字幕
yt-dlp --write-auto-subs --sub-format best --sub-lang en --skip-download [--proxy ...] URL
# 在视频中嵌入自动生成的阿拉伯语字幕,字幕嵌入操作仅适用于mp4,Webm和MKV视频
yt-dlp --write-auto-subs --sub-lang ar --embed-subs --merge-output-format mp4 [--proxy ...] URL
下载文本中所有视频
yt-dlp -a urls.txt [--proxy ...] URL
下载时间戳范围的片段
yt-dlp --download-sections "*1:30-inf" [--proxy ...] URL # 前缀*,范围边界0:00 - inf
下载指定章节的片段
yt-dlp --download-sections "intro" [--proxy ...] URL
下载所有章节切片并按id.title.ext命名,同时下载一份完整的视频。
输出模板参数有section_number,section_title,section_start和section_end
yt-dlp --split-chapters -o "chapter:%(section_number)03d. %(section_title)s.%(ext)s" [--proxy ...] URL
格式化命名文件并指定路径保存
-o "~/YouTube/%(title)s.%(ext)s"
-o "%(uploader)s/%(upload_date)s - %(title)s (%(id)s).%(ext)s"
-o "%(duration>%H-%M-%S)s" # 视频时长
输出模板的语法见output-template
yt-dlp --embed-thumbnail --merge-output-format mp4 [--proxy ...] URL
yt-dlp -x --audio-format mp3 [--proxy ...] URL -o '%(title)s_%(id)s.mp3'

下载高清视频需要调取浏览器cookie登录
# 下载单P视频
yt-dlp https://www.bilibili.com/video/BV1dM411t7Ls --cookies-from-browser chrome
# 分P视频仅下载P1
yt-dlp https://www.bilibili.com/video/BV1vs4y1b7rU?p=1 --cookies-from-browser chrome
作为外部下载器加速下载,多线程并发,提升带宽利用率。 详情见Aria2 Manual
下面仅介绍arias作为命令行工具的下载配置以及基础用法
访问官网releases页面,根据选择的版本和本机环境在Assets下找到安装包,点击下载
我这里选择windows x64的安装包

下载成功后解压,为了方便我直接放D盘并改名aria2
打开文件夹,复制aria2c.exe的路径(我这里是D:\aria2),在环境变量path中配置(方法同2.2)
快捷操作:
win+R调出【运行】对话框 -> 输入sysdm.cpl,回车打开【系统属性】 -> 【高级】-> 【环境变量】 -> 【用户变量】
双击path新建,粘贴路径
aria2c [OPTIONS] [URI | MAGNET | TORRENT_FILE | METALINK_FILE]...
命令行输入aria2c -h查看具体参数说明
最简单的用法是aria2c URL,例如:
aria2c https://www.bilibili.com/
# --downloader:指定下载器,aria2c以外还支持avconv,axel,curl,ffmpeg,httpie,wget
# --downloader-args:下载参数 -c:断点续传;-j:并发数;-x:线程数(最多16);-k:分段(每段1M)
yt-dlp --downloader aria2c --downloader-args aria2c:"-c -j 3 -x 8 -k 1M" [--proxy ...] URL
基础用例:
from yt_dlp import YoutubeDL
URLS = ['https://www.youtube.com/watch?v=BaW_jenozKc']
with YoutubeDL() as ydl:
ydl.download(URLS)
更多用例参考见embedding-examples
了解可用参数和公共函数列表,见yt_dlp.YoutubeDL.py
WARNING: [youtube] Unable to download webpage: <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。>
解决:
ArchWiki:https://wiki.archlinux.org/title/Yt-dlp
支持的视频列表见supportedsites ↩︎
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub