我想使用类似这样的格式选择器-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
但我不想要那样。我希望音频和视频的质量尽可能好,同时确保它们兼容。该怎么做?
答案1
您可以使用以下方式下载最佳视频和音频:
youtube-dl -f bestvideo+bestaudio "link to youtube video"
如果出现错误,请尝试以下操作:
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 "link to youtube video"
在这里,您可以分别下载最佳视频和音频,然后合并为一个文件(在本例中为 mp4 文件)。您还可以更改合并视频的输出格式。
祝你好运!
答案2
老问题,但谷歌上的第一个答案是:
通过定义以下函数,它对我有用(也可以将其放在~/.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
}
现在你可以下载
youtube-dl_video_and_audio_best_no_mkv_merge "https://www.youtube.com/watch?v=*******" "https://https://www.youtube.com/watch?v=********"
来源:自己创作
答案3
混合搭配格式
这将显示链接视频的所有可用格式。
youtube-dl -F [http_link]
所以
然后只需选择格式并加入加号即可。
137 = 2k,30fps。例如,我不需要 60fps,但我想要最好的音频。
youtube-dl -f 137+bestaudio --merge-output-format mkv [http_link]
请注意,并非所有格式都能合并为 mp4,因此 mkv 是更安全的选择。
答案4
与上述类似,我使用以下方法下载播放列表中所有视频的最佳视频和最佳音频
有一个手动组件,你需要在与 youtube-dl 相同的目录中有 FFMpeg 文件夹
首先运行 .\youtube-dl.exe --list-formatshttps://www.youtube.com/watch?v=cTcMtgA6iYt
示例输出:
.\youtube-dl.exe --list-formats 的输出 https://www.youtube.com/watch?v=cTcMtgA6iYt
现在选择要合并的格式编号 [视频为 137,音频为 140] 注意 | 您需要选择相同的格式容器,例如视频的 313 不适用于 140,您需要一个仅 webm 音频文件,例如 251
然后运行以下命令
.\youtube-dl.exe --ffmpeg-location “D:\FFmpeg\ffmpeg-N-100072-g1555cfedf6-win64-gpl-shared-vulkan\bin\ffmpeg.exe” --format 137+140 --yes-playlist -ihttps://www.youtube.com/playlist?list=PLFfX4Mdr5gLs52KWVl3KQNrRpTmLOn
下载完所有 137 可用的文件后,重新运行相同的命令,但这次使用下一个最佳代码,如 136+140
我通常会这么做...
最后...我跑了
.\youtube-dl.exe --ffmpeg-location “D:\FFmpeg\ffmpeg-N-100072-g1555cfedf6-win64-gpl-shared-vulkan\bin\ffmpeg.exe” --format 22 --yes-playlist -ihttps://www.youtube.com/playlist?list=PLFfX4Mdr5gLs52KWVl3ZQNrSoTmLOnQdk
22 - 将拾取所有错过的视频,当您忽略格式开关时,它是 youtube-dl 默认下载的视频和音频合并文件