问题描述
我在14.04中安装了youtube-dl。
我可以通过下面的命令下载视频,
$ youtube-dl [youtube-link]
但我想知道如何选择YouTube视频的可用像素质量(即1080p,720p,480p等)。
在软件描述中,他们说这是可能的(如下图所示),但是怎么做..
最佳解决办法
要下载视频,请在命令后键入URL,如下所示:
youtube-dl "http://www.youtube.com/watch?v=P9pzm5b6FFY"
要选择视频质量,请首先使用-F
选项列出可用格式,这里是一个示例,
youtube-dl -F "http://www.youtube.com/watch?v=P9pzm5b6FFY"
这是输出:
[youtube] Setting language
[youtube] P9pzm5b6FFY: Downloading webpage
[youtube] P9pzm5b6FFY: Downloading video info webpage
[youtube] P9pzm5b6FFY: Extracting video information
[info] Available formats for P9pzm5b6FFY:
format code extension resolution note
140 m4a audio only DASH audio , audio@128k (worst)
160 mp4 144p DASH video , video only
133 mp4 240p DASH video , video only
134 mp4 360p DASH video , video only
135 mp4 480p DASH video , video only
136 mp4 720p DASH video , video only
17 3gp 176x144
36 3gp 320x240
5 flv 400x240
43 webm 640x360
18 mp4 640x360
22 mp4 1280x720 (best)
最好的质量是22,所以使用-f 22
而不是-F
来下载像这样的1280×720分辨率的MP4视频:
youtube-dl -f 22 "http://www.youtube.com/watch?v=P9pzm5b6FFY"
或者可以选择使用以下标志自动下载可用的最佳音频和视频轨道:
youtube-dl -f bestvideo+bestaudio "http://www.youtube.com/watch?v=P9pzm5b6FFY"
如果在复用过程中遇到错误,请尝试以下操作:
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 "http://www.youtube.com/watch?v=P9pzm5b6FFY"
该命令将确保您从视频中下载最高品质的mp4视频和m4a音频,并将它们合并回单个mp4(在我的情况下使用ffmpeg)。
来源:http://www.webupd8.org/2014/02/video-downloader-youtube-dl-gets.html
次佳解决办法
您可以使用youtube-dl下载1080p,但您需要做一些额外的工作。通常情况下,即使您可以在youtube.com上看到1080p,它也只会下载最高720p。
使用-F运行以查看可用格式:
youtube-dl -F https://www.youtube.com/watch\?v\=-pxRXP3w-sQ
171 webm audio only DASH audio 115k , audio@128k (44100Hz), 2.59MiB (worst)
140 m4a audio only DASH audio 129k , audio@128k (44100Hz), 3.02MiB
141 m4a audio only DASH audio 255k , audio@256k (44100Hz), 5.99MiB
160 mp4 256x144 DASH video 111k , 12fps, video only, 2.56MiB
247 webm 1280x720 DASH video 1807k , 1fps, video only, 23.48MiB
136 mp4 1280x720 DASH video 2236k , 24fps, video only, 27.73MiB
248 webm 1920x1080 DASH video 3993k , 1fps, video only, 42.04MiB
137 mp4 1920x1080 DASH video 4141k , 24fps, video only, 60.28MiB
43 webm 640x360
18 mp4 640x360
22 mp4 1280x720 (best)
请注意,youtube-dl已将最后一个选项1280×720标记为’best’质量,这是默认下载的内容,但以137开头的行实际上质量更高,为1920×1080。 Youtube已将视频和音频流分离为标记为DASH的行,因此我们还需要选择最高质量的音频,本例中是以141开头的行。然后我们再次运行youtube-dl,指定音频和视频:
youtube-dl -f 137+141 https://www.youtube.com/watch\?v\=-pxRXP3w-sQ
并将它与highest-quality音频一起下载1080p视频和auto-merge。它也应该是auto-deleted单独下载的部分。这种方法有点额外的工作,但会给你带来最好的结果。
第三种解决办法
要选择特定分辨率,您可以指定大小和音频质量,以便自动选择 – 因此对于480p:
-f 'bestvideo[height<=480]+bestaudio/best[height<=480]'
与bestvideo[height<=720]+bestaudio/best[height<=720]
为720p等。这可以添加到配置文件在~/.config/youtube-dl/config
(甚至/etc/youtube-dl.conf
),所以你不会得到过大的下载:
mkdir ~/.config/youtube-dl
echo "-f 'bestvideo[height<=720]+bestaudio/best[height<=720]'" >> ~/.config/youtube-dl/config
如果要禁用特定youtube-dl运行的配置文件,则可以使用--ignore-config
。
请注意,经常需要下载单独的视频和音频蒸汽并合并它们。
有关更多示例,请参阅youtube-dl
的制作。
第四种办法
提示输入格式的bash包装器脚本,其中包括所有可用的格式,包括audio-only,video-only。
接受绝对的YouTube网址和视频ID。
#!/ usr/bin/env bash
# Download youtube video with desired quality
# Accept both full URLs and video id's such as AQcQgfvfF1M
# match by regex, starts with http:// or https://
if [[ "$1" =~ ^https?:\/\/.* ]]; then
url=$*
else
url="https://www.youtube.com/watch?v=$*"
fi
echo "Fetching available formats for $url..."
youtube-dl -F "$url"
read -p "Please enter the desired quality code: " FORMAT
echo "Streaming with quality $FORMAT..."
mpv --cache=1024 $(youtube-dl -f $FORMAT -g "$url")
示例输出:
yt.sh https://m.youtube.com/watch?v=Dax_tnZRExc
[youtube] Dax_tnZRExc: Downloading webpage
[youtube] Dax_tnZRExc: Downloading video info webpage
[youtube] Dax_tnZRExc: Extracting video information
[youtube] Dax_tnZRExc: Downloading MPD manifest
[info] Available formats for Dax_tnZRExc:
format code extension resolution note
139 m4a audio only DASH audio 49k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 308.75KiB
249 webm audio only DASH audio 50k , opus @ 50k, 271.91KiB
250 webm audio only DASH audio 70k , opus @ 70k, 366.63KiB
171 webm audio only DASH audio 118k , vorbis@128k, 652.50KiB
140 m4a audio only DASH audio 127k , m4a_dash container, mp4a.40.2@128k (44100Hz), 820.00KiB
251 webm audio only DASH audio 130k , opus @160k, 705.84KiB
160 mp4 256x144 DASH video 109k , avc1.4d400c, 13fps, video only, 703.64KiB
278 webm 256x144 144p 111k , webm container, vp9, 25fps, video only, 439.72KiB
242 webm 426x240 240p 243k , vp9, 25fps, video only, 623.95KiB
133 mp4 426x240 DASH video 252k , avc1.4d4015, 25fps, video only, 1.54MiB
134 mp4 640x360 DASH video 388k , avc1.4d401e, 25fps, video only, 1.24MiB
243 webm 640x360 360p 458k , vp9, 25fps, video only, 1.19MiB
135 mp4 854x480 DASH video 761k , avc1.4d401e, 25fps, video only, 2.40MiB
244 webm 854x480 480p 893k , vp9, 25fps, video only, 2.00MiB
136 mp4 1280x720 DASH video 1382k , avc1.4d401f, 25fps, video only, 4.56MiB
247 webm 1280x720 720p 1754k , vp9, 25fps, video only, 3.94MiB
137 mp4 1920x1080 DASH video 2350k , avc1.640028, 25fps, video only, 8.48MiB
248 webm 1920x1080 1080p 2792k , vp9, 25fps, video only, 8.09MiB
17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k
36 3gp 320x180 small , mp4v.20.3, mp4a.40.2
43 webm 640x360 medium , vp8.0, vorbis@128k
18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k
22 mp4 1280x720 hd720 , avc1.64001F, mp4a.40.2@192k (best)
Please enter the desired format #
If you want to download the video as opposed to stream it, just remove the
mpv --cache=1024
part and the dollar sign with brackets.