youtube-dl 格式选项 API

Ari*_*iou 5 youtube youtube-dl

youtube API 是否提供您从 youtube 收听的原始音频作为下载选项?也许是 --extract-audio 选项?

mw5*_*509 5

默认情况下,youtube-dl 会尝试下载最佳可用质量,即如果您想要最佳质量,则不需要传递任何特殊选项,youtube-dl 会默认为您猜测。

自 2015 年 4 月和版本 2015.04.26 起,youtube-dl 使用 -f bestvideo+bestaudio/best 作为默认格式选择(请参阅 #5447( https://github.com/ytdl-org/youtube-dl/issues / 5447),#5456(https://github.com/ytdl-org/youtube-dl/issues/5456))。

如果您想保留旧的格式选择行为(在 youtube-dl 2015.04.26 之前),即您想下载作为单个文件提供的最佳可用质量媒体,您应该使用 -f best 明确指定您的选择。您可能希望将其添加到配置文件中,以免每次运行 youtube-dl 时都输入它。

参考:https : //github.com/ytdl-org/youtube-dl/blob/master/README.md#readme

如果这有帮助,请告诉我。如果没有,我们可以具体弄清楚。

更新

这里有一些可以派上用场的命令;

# Download best mp4 format available or any other best if no mp4 available
$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'

# Download best format available but no better than 480p
$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]'

# Download best video only format but no bigger than 50 MB
$ youtube-dl -f 'best[filesize<50M]'

# Download best format available via direct link over HTTP/HTTPS protocol
$ youtube-dl -f '(bestvideo+bestaudio/best)[protocol^=http]'

# Download the best video format and the best audio format without merging them
$ youtube-dl -f 'bestvideo,bestaudio' -o '%(title)s.f%(format_id)s.%(ext)s'
Run Code Online (Sandbox Code Playgroud)


cse*_*der 1

更灵活(使用 shell 别名)

如前所述,默认设置为从提供的视频 URL 下载最高质量的视频。这并不等于说它总是如此,而且当然也并非总是如此。

我是稳定性的粉丝,并且在直接指定选项方面有更好的经验,因为默认值往往会随着版本/更新而改变,但使用特定选项仍然有效,否则您会收到警告或错误。
使用直接选项我知道我最终会得到什么。
它也更加灵活。

您可以选择优先考虑的首选格式,如果请求的格式/质量不可用,则自动合并最佳兼容的视频+音频,您可以指定用于命名下载文件的格式字符串,并决定其最终位置(默认情况下)它是当前的工作目录)。

您可以使用单独的设置文件,在 Mac 上默认为: ~/.config/youtube-dl/config 或者,您可以使用 shell 中定义的别名(我已命名为 alias :ytdl),所以我只需执行以下操作:

:ytdl link_to_single_video

并将其设置为自动下载首选视频/音频格式,并使用我决定使用的命名约定,将它们合并到我的 shell 启动文件中的别名命令中指定的位置。

我还有一个:ytdlpl playlist_id别名,可以将完整的播放列表下载到指定的文件夹:

/playlists/[name_from_playlist_title]/[episode_num_and_name_from_playlist].[ext]

我通过设置两个别名来完成此操作:

# Download best mp4 format available or other format if no mp4 is available
alias :ytdl='/usr/local/bin/youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" -o "/Volumes/SSD/Video/YTDL/%(title)s.%(ext).s"'

# Download YouTube playlist videos in separate directory indexed by video order in a playlist
alias :ytdlpl='/usr/local/bin/youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" -o "/Volumes/SSD/Video/YTDL/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s"'

Run Code Online (Sandbox Code Playgroud)


您选择如何执行此操作是个人喜好,但这至少非常适合我的需求!