Download only format mp4 on youtube-dl
Like this (source):
youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' url
To list the available formats type:
youtube-dl -F url
Then you can choose to download a certain format-type by entering the number for the format code (in the sample below 11
):
youtube-dl -f 11 url
Example from webupd8
youtube-dl -F http://www.youtube.com/watch?v=3JZ_D3ELwOQ
sample output:
[youtube] Setting language
[youtube] 3JZ_D3ELwOQ: Downloading webpage
[youtube] 3JZ_D3ELwOQ: Downloading video info webpage
[youtube] 3JZ_D3ELwOQ: Extracting video information
[info] Available formats for 3JZ_D3ELwOQ:
format code extension resolution note
171 webm audio only DASH webm audio , audio@ 48k (worst)
140 m4a audio only DASH audio , audio@128k
160 mp4 192p DASH video
133 mp4 240p DASH video
134 mp4 360p DASH video
135 mp4 480p DASH video
136 mp4 720p DASH video
137 mp4 1080p DASH video
17 3gp 176x144
36 3gp 320x240
5 flv 400x240
43 webm 640x360
18 mp4 640x360
22 mp4 1280x720 (best)
You can choose best
and type
youtube-dl -f 22 http://www.youtube.com/watch?v=3JZ_D3ELwOQ
To get the best video quality (1080p DASH - format "137") and best audio quality (DASH audio - format "140"), you must use the following command:
youtube-dl -f 137+140 http://www.youtube.com/watch?v=3JZ_D3ELwOQ
EDIT
You can get more options here
Video Selection:
--playlist-start NUMBER Playlist video to start at (default is 1)
--playlist-end NUMBER Playlist video to end at (default is last)
--playlist-items ITEM_SPEC Playlist video items to download. Specify
indices of the videos in the playlist
separated by commas like: "--playlist-items
1,2,5,8" if you want to download videos
indexed 1, 2, 5, 8 in the playlist. You can
specify range: "--playlist-items
1-3,7,10-13", it will download the videos
at index 1, 2, 3, 7, 10, 11, 12 and 13.
--match-title REGEX Download only matching titles (regex or
caseless sub-string)
--reject-title REGEX Skip download for matching titles (regex or
caseless sub-string)
--max-downloads NUMBER Abort after downloading NUMBER files
--min-filesize SIZE Do not download any videos smaller than
SIZE (e.g. 50k or 44.6m)
--max-filesize SIZE Do not download any videos larger than SIZE
(e.g. 50k or 44.6m)
--date DATE Download only videos uploaded in this date
--datebefore DATE Download only videos uploaded on or before
this date (i.e. inclusive)
--dateafter DATE Download only videos uploaded on or after
this date (i.e. inclusive)
--min-views COUNT Do not download any videos with less than
COUNT views
--max-views COUNT Do not download any videos with more than
COUNT views
--match-filter FILTER Generic video filter (experimental).
Specify any key (see help for -o for a list
of available keys) to match if the key is
present, !key to check if the key is not
present,key > NUMBER (like "comment_count >
12", also works with >=, <, <=, !=, =) to
compare against a number, and & to require
multiple matches. Values which are not
known are excluded unless you put a
question mark (?) after the operator.For
example, to only match videos that have
been liked more than 100 times and disliked
less than 50 times (or the dislike
functionality is not available at the given
service), but who also have a description,
use --match-filter "like_count > 100 &
dislike_count <? 50 & description" .
--no-playlist Download only the video, if the URL refers
to a video and a playlist.
--yes-playlist Download the playlist, if the URL refers to
a video and a playlist.
--age-limit YEARS Download only videos suitable for the given
age
--download-archive FILE Download only videos not listed in the
archive file. Record the IDs of all
downloaded videos in it.
--include-ads Download advertisements as well
(experimental)
According to this comment by glenn-slayden, an mp4 format with highest video quality is obtained as follows:
I realize this thread is a bit old, but I think the situation has changed somewhat. For my goal:
- first and foremost always take the best available video quality regardless of format;
- but then never let the audio format alone cause you to lose mp4.
Previously, I was using
bestvideo+bestaudio/best
, but I find the following variant works much better for reducingmkv
, (apparently) eliminatingwebm
, but yet still guaranteeing the highest quality video (don't use the--merge-output-format
option when using this):--format bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best
Notice that, in the first term, the
ext
filter is specified for the audio but not the video, a technique which I didn't see mentioned in the discussion above. If that seems backwards for my stated goals, that might be because, considering that we're trying to ensure that the video format ismp4
, why is the constraint given for the audio?The key is that each fallback term (separated by the slashes) will fail if any part of its requirement fails, moving on to the next term. When using
bestvideo+bestaudio
, many cases of getting a non-mp4 container only show up because that format selection unequivocally insists onbestaudio
, which may then mean a mixed format. It's because thebestvideo+bestaudio
command is too insistent that you get forced out ofmp4
.But what if you care more about getting a mp4 container than you do about the audio quality? By insisting on
m4a
audio first--but then relenting on just that part while issuingbestvideo
again--(by using the the format selection above) you essentially express a flexible preference formp4
over the other containers; you surely do wantmp4
if possible, but not at the cost of reduced video quality.As I said, you may still get some
mkv
, but they will be greatly reduced in number and only used when required to supply a (supposedly) better video. And so far with this configuration, I haven't seen anywebm
at all, because something like 248+140 works ends up asmkv
.
In the latter case, adding --merge-output-format mp4
will convert to mp4 if required. So the full command is:
youtube-dl --format "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4