跳转至

下载工具\#

简单介绍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'"
接下来就可以很方便地调用yt-dlp指令了:
ytdl bili_video_url
使用这条命令可以一键下载指定的视频到固定位置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,可采用如下方法进行下载:

yt-dlp -a -o "%(title)s.%(ext)s" -v -ci --batch-file urls.txt
  • -a:表示下载视频的音频和视频文件。
  • -o "%(title)s.%(ext)s":表示指定输出文件名格式。%(title)s表示视频的标题,%(ext)s表示视频文件的扩展名。
  • -v:表示启用详细输出,显示下载过程中的详细信息。
  • -ci:表示启用断点续传功能。
  • --batch-file urls.txt:表示从urls.txt文件中读取URL列表,批量下载视频。

使用ffmpeg批量合并分p视频

ffmpeg -f concat -safe 0 -i input.txt -c:v libx264 -crf 23 -c:a aac -strict experimental output.mp4

这个命令的关键部分是-f concat -safe 0 -i <input.txt>,其中<input.txt>是一个文本文件,列出了要拼接的视频文件的路径和顺序。您需要创建一个名为input.txt的文本文件,并在其中列出文件夹中的视频文件

接下来的部分-c:v libx264 -crf 23 -c:a aac -strict experimental 是用来设置视频和音频编码参数的。您可以根据需要调整这些参数以满足您的要求。这个命令将视频拼接在一起,并将结果保存为output.mp4

执行此命令后,将生成一个包含所有视频片段的拼接视频