我正在尝试从 Youtube 下载质量最好的 mp4 格式的视频,但不带音频。
我知道我可以使用 youtube-dl -F 查看所有可用格式,选择一种然后运行另一个命令,但我想通过脚本自动下载视频。
youtube-dl -f mp4 <URL>
这会选择最佳的 mp4 选项,但该选项也带有音频,因此通常不是最佳的视频质量(720p 而不是 1080p)。
似乎使用 bestvideo 然后指定带有 mp4 扩展名的输出路径是可行的:
youtube-dl -f bestvideo -o "%(title)s.mp4" <URL>
这是我目前的解决方案。查看带有 -F 的下载选项,似乎它仍然会下载最佳视频(无论它是否是 mp4,在我的情况下是 webm),然后将其转换为 mp4?因为下载的文件和 -F 中的最佳质量之间的文件大小相匹配。
如果有人知道更好的解决方案,请告诉我!:)
答案1
如果您指定mp4
格式为 youtube-dl总是将其解释为请求一种“旧”的组合音频+视频格式,这在过去是唯一的选择。
要请求 DASH 使用的新的纯音频或纯视频流之一(用于更高质量的流),请bestvideo
与[filter]
请求特定编解码器一起使用:
要专门请求 H.264 (AVC)(即检查
vcodec
以 开头的avc1.
):youtube-dl -f "bestvideo[vcodec^=avc1.][ext=mp4]" <url>
要请求 H.264 (AVC) 或 H.265 (HEVC) 或其他适合 MP4 文件的代码:
youtube-dl -f "bestvideo[ext=mp4]" <url>
(请记住,相同的“.mp4”文件格式可以有几种不同的编解码器!它不包含 VP8 或 VP9——这些只出现在 MKV/WebM 中——但它能具有 AVC 或 HEVC。虽然 YouTube 可能不会为您提供 HEVC,但其他视频托管网站偶尔会提供。)