如何使用 youtube-dl 下载最佳视频以及最佳兼容音频?

Shi*_*iva 36 youtube youtube-dl

我想使用类似的格式选择器,-f bestvideo+best audio whose extension is compatible with the video extension这样它们就不需要被混合到 mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.) 中。

注意:我知道-f best并且我不想要那个。我想要音频和视频的最佳质量,同时确保它们兼容。怎么做?

小智 54

您可以使用以下方法下载最佳视频和音频:

youtube-dl -f bestvideo+bestaudio "link to youtube video"
Run Code Online (Sandbox Code Playgroud)

如果这给您带来错误,请尝试以下操作:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 "link to youtube video"
Run Code Online (Sandbox Code Playgroud)

在这里,您可以分别下载最好的视频和音频,然后合并成一个,在这种情况下是 mp4 文件。您也可以更改合并视频的输出格式。

祝你好运!


小智 9

老问题,但首先在谷歌上回答,所以:

通过定义以下函数,它对我有用(也可以将它放在 中~/.bashrc):

youtube-dl_video_and_audio_best_no_mkv_merge () {
  video_type=$(youtube-dl -F "$@" | grep "video only" | awk '{print $2}' | tail -n 1)
  case $video_type in
    mp4)
      youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' "$@";;
    webm)
      youtube-dl -f 'bestvideo[ext=webm]+bestaudio[ext=webm]' "$@";;
    *)
      echo "new best videoformat detected, please check it out! -> aborted";;
  esac
}
Run Code Online (Sandbox Code Playgroud)

现在你可以下载

youtube-dl_video_and_audio_best_no_mkv_merge "https://www.youtube.com/watch?v=*******" "https://https://www.youtube.com/watch?v=********"
Run Code Online (Sandbox Code Playgroud)

来源:自创

  • 请注意,函数名称在技术上无效,特别是破折号和加号。所以你在使用这个函数时可能会遇到问题,尤其是导出它。我建议将其制作成脚本(因为它不需要是一个函数),并将名称更改为类似 `youtube-dl_video_and_audio_best_no_mkv_merge` 的名称。 (2认同)

小智 7

您选择音频和视频格式,然后与 结合+

例如:

youtube-dl -f 140+137 --merge-output-format mp4 youtube_link
Run Code Online (Sandbox Code Playgroud)

但又ffmpeg是必要的。


小智 5

混搭格式

这将显示链接视频的所有可用格式。

youtube-dl -F [http_link]

所以

然后只需选择格式并加入加号。

137 = 2k,30fps。例如,我不想要 60fps,但我想要最好的音频。

youtube-dl -f 137+bestaudio --merge-output-format mkv [http_link]

请注意,并非所有格式都合并到 mp4 中,因此 mkv 是一个更安全的选择。