yt-dlp 下载 YouTube 视频 – 快捷的命令行工具

yt-dlp 是 youtube-dl 的分叉版本,GitHub: yt-dlp/yt-dlp: A youtube-dl fork with additional features and fixes (github.com) ,它支持很多网站视频的下载,除了油管,还有 Twitter、Twitch、Bilibili 等。

指标 描述
适用系统 Debian 系发行版,包括 Ubuntu, Armbian,其他发行版稍改命令一般也可
走通流程时间 12 分钟

I might have made some mistakes, please let me know if I’ve gotten anything wrong!

下面是它结合网络记事本方便日常使用的演示。


通观全局(以 /home/vfly2 为家目录)

yt-dlp 是一个单文件程序,它还需要 yt-dlp.conf 保存配置文件,以及 FFmpeg 来合并音视频等。

本文还涉及到了一个脚本文件、视频链接文件和 nfo 转换文件。最终所有文件位置如下:

/usr/local/bin/
├── ffmpeg
├── ffprobe
├── nfo.sh
├── yt-dlp
└── yt-dlp.conf

仅此 5 个文件,一目了然。

安装和设置

安装前置工具

sudo apt install -y curl python3

确保版本 Python 3.10+

python3 --version

安装 yt-dlp

官方文档:Installation · yt-dlp/yt-dlp Wiki

一键复制运行即可安装

curl -LO https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp
sudo mv yt-dlp /usr/local/bin/yt-dlp && sudo chmod a+rx /usr/local/bin/yt-dlp

更新

sudo yt-dlp -U --proxy socks5://127.0.0.1:10808/

这里下载的是仅有 Python 源代码的压缩包,因此需要手动安装 Python。还有一个相似的 yt-dlp_linux 是附带了 Python 解释器的,所以不需要手动安装。

安装依赖 FFmpeg 和 ffprobe

由于原版 FFmpeg 用于 yt-dlp 有 Bug,因此 yt-dlp 制作了这个 GitHub: yt-dlp/FFmpeg-Builds: FFmpeg Builds for yt-dlp (github.com)

一键复制运行即可安装

wget https://github.com/yt-dlp/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-linux64-gpl.tar.xz && \
tar -Jxv -f ffmpeg-master-latest-linux64-gpl.tar.xz && \
sudo mv ./ffmpeg-master-latest-linux64-gpl/bin/* /usr/local/bin/

# 清理
rm -r ffmpeg-master-latest-linux64-gpl
rm ffmpeg-master-latest-linux64-gpl.tar.xz

查看 ffmpeg 版本,确保安装成功

ffmpeg -version

这个也可以给 BBDown 使用

安装 deno

deno 的安装:Installation

curl -fsSL https://deno.land/install.sh | sh

这是用来执行 js 脚本的解释器,如果缺少的话,YouTube 下载可能会失败。

配置

更多配置查看项目主页: https://github.com/yt-dlp/yt-dlp#configuration

sudo vim /usr/local/bin/yt-dlp.conf

注意配置文件内不能有中文字符,否则会报错

# subdirectory + filename
-o '%(title)s/%(title)s.%(ext)s'

# thumbnail to jpg
--write-thumbnail
--convert-thumbnails jpg

# proxy
#--proxy 127.0.0.1:7890

# other
--write-description
--write-subs
--sub-langs "en, zh-Hans"
--compat-options no-live-chat
#--remux-video mkv

# Execute a command 如果你想要配合 emby,就取消 --exec 这行的注释
# %(filepath,_filename|)q is appended to the end of the command.
# --exec 'bash /usr/local/bin/nfo.sh'

还可以设置下载目录 --paths /home/vfly2/youtube ,不过这里先不设置,在脚本里指定更灵活


查看这个视频有什么字幕可以下载(不会下载视频)

yt-dlp --list-subs https://www.youtube.com/watch?v=Z_1Q0XB4X0Y&list=WL

下载视频时,下载指定字幕

--write-subs --sub-langs "en, zh-Hans"

使用

对于 YouTube,默认下载的是 WebM 格式,Emby 可以识别。

yt-dlp https://www.youtube.com/watch?v=gIbfYsQfNWs

使用代理

yt-dlp --proxy http://127.0.0.1:10809 https://www.youtube.com/watch?v=gIbfYsQfNWs

yt-dlp --proxy socks5://127.0.0.1:10808/ https://www.youtube.com/watch?v=gIbfYsQfNWs

批量下载

命令行工具相比用户界面应用的优势,就是快捷简便自动化

创建一个文件放所有网址,一行一个:

vim /home/vfly2/ytdlplist.txt
https://www.youtube.com/watch?v=gIbfYsQfNWs
https://www.youtube.com/watch?v=laIvjmdM0Ww

执行下载

yt-dlp -a ytdlplist.txt \
  -P downloads \
  -f "bv*+ba/b" \
  --merge-output-format mp4 \
  -N 5
  • -a ytdlplist.txt:网址文件
  • -P downloads:下载目录
  • -f "bv*+ba/b":优先最佳视频+音频
  • --merge-output-format mp4:统一封装
  • -N 5:并发下载,同时 5 个下载线程

转换 nfo 脚本

如果要配合 Emby 使用,可以了解下面这一段。

在配置文件中,有选项 --write-description ,它是将视频简介(description 文件)也保存,但由于是纯文本, Emby 并不能识别。下面就是在下载完之后借助选项 --exec ,执行一个脚本将 description 文件转换为 Emby 能识别的 nfo 文件。


首先,取消配置文件中对 --exec 'bash /usr/local/bin/nfo.sh' 的注释。 --exec 会将视频路径和名称传给脚本。

然后创建转换脚本

sudo touch /usr/local/bin/nfo.sh && sudo chmod a+x /usr/local/bin/nfo.sh

编辑

sudo vim /usr/local/bin/nfo.sh
#!/bin/bash

# 生成临时文件
tee nfo1.temp <<-'EOF'
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<movie>
  <plot><![CDATA[
EOF

tee nfo2.temp <<-'EOF'

]]></plot>
</movie>
EOF

# 生成 emby 可识别的 nfo 文件并添加换行符号
file=$1
filename=${file%.*}
nfo=${filename}.nfo
description=${filename}.description

touch "${nfo}";
cat nfo1.temp > "${nfo}";
# 使用 `sed` 命令在读取的 `${description}` 文件中的每一行末尾添加 `<br/>` 换行标记,
sed 's#$#&<br/>#g' "${description}" >> "${nfo}";
cat nfo2.temp >> "${nfo}";

# 删除临时文件
rm nfo1.temp nfo2.temp

这样在下载完之后就会调用脚本,实现转换。


原文链接: https://yanh.tech/2023/10/download-youtube-videos-with-yt-dlp/

版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech)

保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,如果能留言互动就更好了。

可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。

评论

  1. 2 年前
    2024-6-27 22:26:00

    经常用他下载youtube的视频,不用苦哈哈地用OBS录屏了。🤣😂

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇