我正在下载 播放列表上的所有视频:
我正在使用 youtube-dl 进行此操作,命令是:
youtube-dl -citk –format mp4 –yes-playlist https://www.youtube.com/watch?v=7Vy8970q0Xc&list=PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2
但这只是下载第一个视频。不知道我做错了什么。
从 URL 中删除 v=...&部分,并且只保留 list=...部分。主要问题是由 shell 解释的特殊字符 &。
v=...&
list=...
&
您还可以在命令中引用“ url”。
更多资料(例如) :
Https://askubuntu.com/questions/564567/how-to-download-playlist-from-youtube-dl
在 shell 中,&是一个特殊的字符,建议 shell 在后台启动所有的 & 进程。为了避免这种行为,您可以将 URL 放在引号中。有关更多信息,请参见 Youtube-dl 常见问题解答。
还要小心 -citk。除了 -i,这些选项没什么意义。有关更多信息,请参见 Youtube-dl 常见问题解答。甚至 -f mp4看起来也很奇怪。
-citk
-i
-f mp4
所以你想要的是:
youtube-dl -i -f mp4 --yes-playlist 'https://www.youtube.com/watch?v=7Vy8970q0Xc&list=PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2'
或者,你也可以使用播放列表 ID:
youtube-dl -i PLwJ2VKmefmxpUJEGB1ff6yUZ5Zd7Gegn2
以上的方法我都试过了,但没有一个能解决我的问题。我通过更新旧版本的 youtube-dl 下载播放列表来修复它。 更新一下
sudo youtube-dl -U
或者
youtube-dl -U
在使用上述命令成功更新之后
youtube-dl -cit https://www.youtube.com/playlist?list=PLttJ4RON7sleuL8wDpxbKHbSJ7BH4vvCk
在多次尝试解决这个问题之后,我找到了最好的解决办法。
安装和使用;
对于 Windows 用户:
剧本:
youtube-dl --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist https://www.youtube.com/playlist?list={your-youtube-playlist-id}
{your-youtube-playlist-id}
对于 macOS/Linux 用户:
youtube-dl --ignore-errors --format bestaudio --extract-audio --audio-format mp3 --audio-quality 160K --output "%(title)s.%(ext)s" --yes-playlist 'https://www.youtube.com/playlist?list={your-youtube-playlist-id}'
brew install youtube-dl ffmpeg
install youtube-dl ffmpeg
你的链接不是播放列表。
正确的播放列表 URL 如下所示:
https://www.youtube.com/playlist?list=PLHSdFJ8BDqEyvUUzm6R0HxawSWniP2c9K
你的 URL 只是第一个视频 的某个播放列表。它包含 https://www.youtube.com/watch?而不是 https://www.youtube.com/playlist?。
https://www.youtube.com/watch?
https://www.youtube.com/playlist?
通过点击视频列表右侧播放列表的标题来选择播放列表,并使用此 URL。
最简单的方法是创建一个 file.txt文件并传递链接 URL 链接,如下所示:
file.txt
https://www.youtube.com/watch?v=5Lj1BF0Kn8c&list=PL9YFoJnn53xyf9GNZrtiraspAIKc80s1i
确保在终端中包含 -a参数:
-a
youtube-dl -a file.txt
youtube-dl <playlist link>
youtube-dl -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
这个命令将下载视频在1080p 的分辨率,如果1080p 是可用的,否则它将下载下一个最好的(小于1080p)的分辨率。在这里,您可以使用480或720等而不是1080。 注意: 请确保已安装“ FFmpeg”,否则视频和音频将不会合并。
这个命令将下载视频在1080p 的分辨率,如果1080p 是可用的,否则它将下载下一个最好的(小于1080p)的分辨率。在这里,您可以使用480或720等而不是1080。
注意: 请确保已安装“ FFmpeg”,否则视频和音频将不会合并。
youtube-dl -o "[%(upload_date)s] %(title)s.%(ext)s" -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
youtube-dl -o "[%(upload_date)s] %(title)s [%(uploader)s].%(ext)s" -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
字幕
youtube-dl --write-auto-sub -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
youtube-dl --write-sub -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
youtube-dl --write-sub --sub-lang en -f 'bestvideo[height<=1080]+bestaudio/best[height<=1080]' <playlist link>
基本上,解决这个问题的方法可以是简单地将 &符号替换为它的编码版本 %26
%26
对于那些正在通过 PHP (例如 shell_exec())解决这个问题的人来说,解决方案可以是 str_replace("&", "%26", $shell_command);
shell_exec()
str_replace("&", "%26", $shell_command);