因此,我尝试使用 youtube-dl 下载整个 YouTube 频道。我知道,如果您使用 -F 命令,它会为您提供视频质量类型的列表。我的问题是:如何下载所有视频中质量最好的视频,以便下载不会默认为 460p 或类似的低质量。
答案1
此答案不适用于旧版本的 youtube-dl。您需要将 youtube-dl 更新到最新版本。您可以在 Python 虚拟环境中本地安装最新版本的 youtube-dl (虚拟环境),或者您可以下载最新版本的 youtube-dl 并使用pip
( sudo apt remove youtube-dl && sudo apt install python-pip && pip install --user youtube-dl
) 安装它。youtube-dl 也是一个 snap 包。要安装它,请输入:
sudo snap 安装 youtube-dl# 使用 snap run youtube-dl 启动它
打开终端并输入:
youtube-dl -f best -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>
...其中,<url-of-channel>
替换为频道的 URL。
笔记:如果您要下载大量视频,则应在开始下载之前将目录更改为要保存视频的目录。
解释
-f, --format FORMAT
video format code. The special name "best" will pick the best quality.
-c, --continue
force resume of partially downloaded files
-i, --ignore-errors
continue on download errors, for example to skip unavailable videos in a channel
-w, --no-overwrites
do not overwrite files
-o, --output
Output filename template, this example functions similarly to the old --title option
-v, --verbose
print various debugging information
答案2
总结使用-f 'bestvideo[height>=720]+bestaudio/best'
标志来获得更高的分辨率。我使用的完整命令是:
youtube-dl -f "bestvideo[height>=720]+bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>
这就是为什么-f best
可能无法为您提供最高分辨率的原因。
当您使用-F
标志列出可能的文件格式时,有时它会将 360p 格式列为“最佳”,例如:
youtube-dl -F https://www.youtube.com/watch?v=FmZXCqqx6q0
[youtube] FmZXCqqx6q0: Downloading webpage
[info] Available formats for FmZXCqqx6q0:
format code extension resolution note
249 webm audio only tiny 61k , opus @ 50k (48000Hz), 12.74MiB
250 webm audio only tiny 80k , opus @ 70k (48000Hz), 16.87MiB
140 m4a audio only tiny 132k , m4a_dash container, mp4a.40.2@128k (44100Hz), 31.35MiB
251 webm audio only tiny 158k , opus @160k (48000Hz), 33.34MiB
...
244 webm 854x480 480p 271k , vp9, 30fps, video only, 35.05MiB
398 mp4 1280x720 720p 443k , av01.0.05M.08, 30fps, video only, 102.27MiB
247 webm 1280x720 720p 480k , vp9, 30fps, video only, 63.02MiB
136 mp4 1280x720 720p 489k , avc1.4d401f, 30fps, video only, 114.12MiB
18 mp4 640x360 360p 360k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 87.29MiB (best)
如您所见,最后一个选项虽然分辨率较低,但仍然被列为最佳选项。我们可以通过几种方法解决这个问题,我尝试从以 720p 上传的频道下载,因此对我来说最简单的方法就是使用标志-f 'bestvideo[height>=720]+bestaudio/best'
。
根据您的情况,您可能需要使用格式选择器表达式,也许将其从 720 增加到 1080 或选择特定的文件格式,如 mp4。
您将需要安装 ffmpeg 或从 mkv 转换。
答案3
您可以将其与 一起使用youtube-dl
。
但我建议使用yt-dlp
,因为它提供更好的下载速度。
Windows 批处理脚本的示例。
也可以适用于 Linux Bash。
来自 Linux Bash 脚本的启发https://askubuntu.com/a/1022993/803975
@ECHO OFF
REM Downloads Video, converts into MKV and embeds subtitles
REM https://askubuntu.com/questions/1022855/download-everything-from-a-youtube-video-using-youtube-dl/1022993#1022993
IF NOT EXIST "./archive/videos/TZM_Archive/" MKDIR "./archive/videos/TZM_Archive/"
IF NOT EXIST "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive" ECHO. > "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive"
yt-dlp ^
--retries "3" ^
--no-overwrites ^
--call-home ^
--write-info-json ^
--write-description ^
--write-thumbnail ^
--all-subs ^
--convert-subs "srt" ^
--write-annotations ^
--add-metadata ^
--embed-subs ^
--download-archive "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive" ^
--format "bestvideo+bestaudio/best" ^
--merge-output-format "mkv" ^
--output "./archive/videos/TZM_Archive/%%(upload_date)s_%%(id)s/TZM_Archive_%%(upload_date)s_%%(id)s_%%(title)s.%%(ext)s" ^
"https://www.youtube.com/user/TZMOfficialChannel/videos"
IF NOT EXIST "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive" ECHO. > "./archive/videos/TZM_Archive/TZM_Archive_subtitles.ytdlarchive"
REM Downloads additional externally available SUBTITLES to the folder of downloaded video
yt-dlp ^
--skip-download ^
--retries "3" ^
--call-home ^
--all-subs ^
--convert-subs "srt" ^
--output "./archive/videos/TZM_Archive/%%(upload_date)s_%%(id)s/TZM_Archive_%%(upload_date)s_%%(id)s_%%(title)s.%%(ext)s" ^
"https://www.youtube.com/user/TZMOfficialChannel/videos"
REM Downloads additional and missing THUMBNAILS
yt-dlp ^
--skip-download ^
--write-all-thumbnails ^
--ignore-config ^
--id ^
--output "./archive/videos/TZM_Archive/%%(upload_date)s_%%(id)s/TZM_Archive_%%(upload_date)s_%%(id)s_%%(title)s.%%(ext)s" ^
"https://www.youtube.com/user/TZMOfficialChannel/videos"
PAUSE
答案4
有点晚了,我想提出我的下载器,我将其作为 ppa 提供给 Ubuntu 用户:
sudo add-apt-repository ppa:jentiger-moratai/mediatools
sudo apt update
sudo apt install ytdownloader
和我的所有应用一样,我尝试让 UI 尽可能简单。ytdownlaoder 被编写用于下载最优质的视频和音频(可能使用不同的服务器)- 它的后端是 yt-dlp:
该应用程序可通过 Gnome、XFCE 和 KDE 上的拖放功能运行