Help us understand the problem. What is going on with this article?

youtube-dlを使ってYouTubeから最高画質で最高音質の動画をダウンロードする

More than 1 year has passed since last update.

1. はじめに

この記事は、前回書いた記事の補足的なものです。
【Python】Python初心者がYoutubeから動画をダウンロードするスクリプトを解説

@ryuta69さんの書いたスクリプトをを大いに参考にさせていただいています。
xvideo-youtube-niconico-soundcloud-download

2.完成形

結果だけ知りたい人はどうぞ。

コマンドライン
youtube-dl -f bestvideo+bestaudio --merge-output-format mp4 [URLまたは動画ID]

3. youtube-dlの落とし穴

コマンドライン
youtube-dl --list-format https://www.youtube.com/watch?v=hogehoge
#出力結果
[youtube] hogehoge: Downloading webpage
[youtube] hogehoge: Downloading video info webpage
[info] Available formats for hogehoge:
format code  extension  resolution note
249          webm       audio only DASH audio   53k , opus @ 50k, 1.40MiB
140          m4a        audio only DASH audio  127k , m4a_dash container, mp4a.40.2@128k, 3.82MiB
243          webm       640x360    360p  355k , vp9, 30fps, video only, 6.51MiB
134          mp4        640x360    360p  507k , avc1.4d401e, 30fps, video only, 7.15MiB
247          webm       1280x720   720p 1323k , vp9, 30fps, video only, 23.98MiB
136          mp4        1280x720   720p 1722k , avc1.4d401f, 30fps, video only, 22.89MiB
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k, 15.56MiB (best)

このように"--list-format"オプションを使うと、その動画のダウンロードできるフォーマット一覧が表示されます。

注目して欲しいのは、一番下の一行の行末に"best"と書いてありますよね?
実はyoutube-dlでは動画や音声の細かいフォーマットを指定しないと、自動でこの"best"フォーマットの動画がダウンロードされてしまいます。

"best"のフォーマットはちょうど中程度の画質になってしまっているので、最高品質を追い求める我々にはもの足りません。
しかし"best"以外のフォーマットは"audio only"や"video only"であることがほとんどで、そのままだと映像音声が別々にダウンロードされてしまいます。

つまり最高品質の動画を手に入れるには、映像と音声をダウンロードしてからマージ(合体)する必要が有ります

4. フォーマットの指定と映像・音声のマージ

youtube-dlのオプションを使い、フォーマットの指定とマージを行います。

・-f [映像コード]+[音声コード]
先ほどのフォーマット一覧の左端に書かれた番号を入力して、フォーマットを指定できます。
我々のように最高品質を追い求める場合には、映像コードに"bestvideo"、音声コードに"bestaudio"を入力することで、自動的に最高画質と最高音質のフォーマットを選択してくれます。

・--merge-output-format [拡張子]
ダウンロード完了後に映像と音声のマージをしてくれます。
拡張子には素直に"mp4"と入力します。

以下のように打ち込んで稼働すれば成功です。

コマンドライン
youtube-dl -f bestvideo+bestaudio --merge-output-format mp4 https://www.youtube.com/watch?v=hogehoge
#出力結果
[youtube] hogehoge: Downloading webpage
[youtube] hogehoge: Downloading video info webpage
[download] Destination: ホゲホゲ動画-hogehoge.f137.mp4
[download] 100% of 37.37MiB in 00:05
[download] Destination: ホゲホゲ動画-hogehoge.f140.m4a
[download] 100% of 5.21MiB in 00:00
[ffmpeg] Merging formats into "ホゲホゲ動画-hogehoge.mp4"
Deleting original file ホゲホゲ動画-hogehoge.f137.mp4 (pass -k to keep)
Deleting original file ホゲホゲ動画-hogehoge.f140.m4a (pass -k to keep)

5. 最後に

これで解説は終わりです。
前回の記事で紹介したスクリプトと組み合わせると、いい感じになると思います。

6. 参考

Qiita
youtube-dlを使いやすくするScript

XvideosのMP3/MP4を一括でダウンロードするスクリプト作ってみた(おまけでyoutubeとかニコニコもOK)

githubのリファレンス
youtube-dl

shiooooooooon
大学一年生を終えて休学し、現在はある会社でエンジニアのインターンをしています。 webアプリの開発を主にやっています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away