下载工具\#
简单介绍yt-dlp
下载视频的命令使用方法
最偷懒便捷的方法:
vim ~/.zshrc
# 加入下面的指令
alias ytdl="yt-dlp --cookies-from-browser chrome -f 'bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080][ext=mp4]' -o '~/downloads/%(title)s.%(ext)s'"
downloads
下,同时自动命名,自动添加后缀,浏览器中的url可以直接复制下来,不需要任何多余的操作
环境配置\#
- 下载yt-dlp,配置环境变量
- 下载ffmpeg,配置环境变量,macOS上可以使用
brew install ffmpeg
-
一个教训:你得自己创建一个文件夹专门用来保存常用命令行工具,这样也方便配置环境变量,同时方便管理,知道自己有哪些工具
-
关于安装ffmpeg:https://www.mintimate.cn/2020/02/25/FFmpeg/
-
关于yt-dlp:https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp
https://zhuanlan.zhihu.com/p/431013905
我之前有过一个手写b站下载器图形应用程序的想法,现在借助yt-dlp,配合aria2的多线程下载,也许会更容易实现,只需要在python界面中调用yt-dlp的下载再返回结果即可?
以下链接用以配置播放器
https://vcb-s.com/archives/7594
mpv的配置文件
- 主目录下创建
portable_config
文件夹 - 在
portable_config
文件夹下命名配置文件mpv.conf
添加的配置命令
profile=gpu-hq
icc-profile-auto
blend-subtitles=video
video-sync=display-resample
interpolation
tscale=oversample
# Video settings
video-sync=display-resample
hwdec=auto
# Audio settings
audio-pitch-correction=yes
# Subtitle settings
sub-auto=fuzzy
# OSC settings
script-opts=osc-layout=bottombar,osc-seekbarstyle=bar
# OSD settings
no-osd-bar
osd-align-x=center
osd-align-y=center
osd-font-size=28
# Screenshot settings
screenshot-format=png
# Window settings
no-border
fullscreen
# Miscellaneous settings
save-position-on-quit
no-input-default-bindings
no-osc
yt-dlp下载命令\#
cd
命令到目标下载目录下,使用下面的命令:
yt-dlp -F --cookies-from-browser chrome [URL]
其中-F
用来查看视频格式构成
--cookies-from-browser chrome
用来调用cookies
如果要加代理,则中间应该加上--proxy socks5://127.0.0.1:8080
下载及合并
yt-dlp -f [下载ID] [代理配置] [视频链接] [合并语句] [外部下载器选择] [下载器参数]
--merge-output-format [合并输出格式]
--external-downloader [下载器名称]
--downloader-args [下载器名称]:"[下载器配置]"
使用以上命令可以得到
yt-dlp -f 2+17 https://www.bilibili.com/video/BV1ZN411H7vP --merge-output-format mp4 --external-downloader aria2c --downloader-args aria2c:"-x 16 -k 1M"
下载实例
yt-dlp --cookies-from-browser chrome --external-downloader aria2c --downloader-args aria2c:"-x 8 -k 1M" -f 'bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080][ext=mp4]' https://www.bilibili.com/video/BV1Zu4y1B7DU https://www.bilibili.com/video/BV1xV41137an https://www.bilibili.com/video/BV1nV41137kJ https://www.bilibili.com/video/BV14V4y1v7pb https://www.bilibili.com/video/BV1ah4y1k7jm https://www.bilibili.com/video/BV1eh4y1k78d https://www.bilibili.com/video/BV1dj411z7FW https://www.bilibili.com/video/BV1k94y1r7o1 https://www.bilibili.com/video/BV1M8411d7Dj https://www.bilibili.com/video/BV1Wm4y1H7Vt https://www.bilibili.com/video/BV11F411C79G https://www.bilibili.com/video/BV1Vm4y1M7mX https://www.bilibili.com/video/BV1Yh4y1K77V https://www.bilibili.com/video/BV1iz4y1j7xY
不使用多线程下载器:
yt-dlp --cookies-from-browser chrome -f 'bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080][ext=mp4]'
如果链接过多,对于txt
文件中的url
,可采用如下方法进行下载:
-a
:表示下载视频的音频和视频文件。-o "%(title)s.%(ext)s"
:表示指定输出文件名格式。%(title)s
表示视频的标题,%(ext)s
表示视频文件的扩展名。-v
:表示启用详细输出,显示下载过程中的详细信息。-ci
:表示启用断点续传功能。--batch-file urls.txt
:表示从urls.txt
文件中读取URL列表,批量下载视频。
使用ffmpeg批量合并分p视频
这个命令的关键部分是-f concat -safe 0 -i <input.txt>
,其中<input.txt>
是一个文本文件,列出了要拼接的视频文件的路径和顺序。您需要创建一个名为input.txt
的文本文件,并在其中列出文件夹中的视频文件
接下来的部分-c:v libx264 -crf 23 -c:a aac -strict experimental
是用来设置视频和音频编码参数的。您可以根据需要调整这些参数以满足您的要求。这个命令将视频拼接在一起,并将结果保存为output.mp4
执行此命令后,将生成一个包含所有视频片段的拼接视频