Edited at

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


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