2019年9月6日金曜日

youtube-dlの使い方

youtube-dlはコマンドラインで動作するストリーム用のダウンローダです。
アプリ名を見たらわかるように「Youtubeとかの動画をダウンロードできる」って言ったほうがわかりやすいかな。

実際にはYoutube以外の多数のサイトに対応しています。
対応するサイトは以下に記載されています
https://ytdl-org.github.io/youtube-dl/supportedsites.html

また、ffmpegやavconvをインストールしてあれば、動画の結合なども可能です。

動作確認したかったのだけど、日本語の解説があまりなかったので、簡単な使い方を覚書しておきます。

※本記事の目的はストリーミングサイトからのダウンロードではなく、コンソールアプリケーションの機能を自作のプログラムへの組み込むためのノウハウの蓄積です。

自作のプログラムに埋め込む手法については以下の記事を参考にしてください。
コンソールアプリケーションの呼び出し(Reflection)


コンソールアプリケーションのffmpegをC#から起動した記事も参考にしてください
早送りのスムーズな動画を作りたい(ffmpeg)

youtube-dlについての記事は以下も確認してください。

1.ダウンロード

公式サイトの「Download」からダウンロードできます。




youtube-dl.exeをダウンロードすればインストール不要で使えますが、使用するには「Microsoft Visual C++ 2010 再頒布可能パッケージ」が必要です。
持ってない人は、こちらもダウンロードしてインストールしてください。


2.使い方

youtube-dlはffmpegなどと同様に、コマンドラインプログラムです。

単純に使用するなら、コマンドプロンプトで以下のように打ち込むだけです。
  youtube-dl ダウンロードしたい動画のURL  


Youtubeの動画の場合、以下のようなURLになると思います
https://www.youtube.com/watch?v=Hogehoge

ブラウザのここに表示されているURLです。


URLにクエリパラメータの部分にプレイリスト情報などが含まれると上手く動作しないようなので、注意してください。

たとえば、以下のようなURLでは赤字部分が不要となります。
https://www.youtube.com/watch?v=Hogehoge&list=aslgjhweSKJh


動画のダウンロード以外にも、プロパティ設定することで動画の情報を取得することができます。
使用頻度の高そうなものを記載しておきます。

タイトルを取得する
  youtube-dl -e ダウンロードしたい動画のURL  

ファイル名を取得する
  youtube-dl --get-filename ダウンロードしたい動画のURL  

2.1.保存するファイル名、保存先を指定する

youtbe-dlのデフォルトのファイル名は
「動画のタイトル」-「動画のID」.「拡張子」
です。

ファイル名を変更するには「-o」オプションを使用します。
  youtube-dl -o "ファイル名" ダウンロードしたい動画のURL  

「ファイル名」の部分をフルパスにすることで保存先を変更することもできます。
指定する際はダブルクォーテーション(")で囲むのを忘れないようにしてください

また、「-o」オプションはテンプレート指定が可能です。(というか、こちらがメイン)
今回の記事では割愛します。
使用する方はオフィシャルサイトを確認してください。

2.2.再生可能なフォーマットの一覧を取得する

コマンドに「-F」オプションをつけることで提供されている動画のフォーマットが取得できます。

  youtube-dl -F ダウンロードしたい動画のURL  

例)


この例では、
No139はm4a形式の音源データ
No.18はmp4形式でサイズが640×360
などということがわかります。

もし、No139の動画(音源)を取得したい場合「-f」オプションを使用します
  youtube-dl -f 139 ダウンロードしたい動画のURL  

この「-f」オプションを使用しない場合、yotube-dlが「いい感じ」のデータを自動で選択してくれています。

また、フォーマットの指定は番号以外に以下も使用できます

  • best:音声付き動画のなかで高画質もの
  • worst: 音声付き動画のなかで低画質もの
  • bestvideo: 音声なし動画のなかで高画質もの
  • worstvideo: 音声なし動画のなかで低画質もの
  • bestaudio: 高品質の音声ファイル
  • worstaudio: 低品質の音声ファイル


高画質の音声付き動画を取得する場合は以下になります
  youtube-dl -f best ダウンロードしたい動画のURL  

また、スラッシュ(/)を使うことで優先度を設定できます。
以下の例ではNo139→No251→bestの順に動画取得を行います。
  youtube-dl -f 139/251/best ダウンロードしたい動画のURL  

また、拡張子なども条件に含むことができます。
  youtube-dl -f 139/mp4 ダウンロードしたい動画のURL  
そのほか、画質や動画のサイズなどの条件も指定できるようです。

3.ffmpegとの連携(動画と音声を結合する)

Youtube動画などでは、動画と音声ファイルが別々に公開されています。
このような場合には、動画ファイルと音声ファイルをそれぞれダウンロードして、結合するような処理が必要なりますが、ffmpegと連携させることで、結合処理を自動で行うことができます
  youtube-dl -f 動画のフォーマットNo+音声のフォーマットNo ダウンロードしたい動画のURL  

手前の例を使うならこんな感じでしょうか
  youtube-dl -f bestvideo+bestaudio ダウンロードしたい動画のURL  

この結合処理を行うには、ffmpegまたはavconv が必要です。

連携は特に設定は不要です。
画像のように、youtube-dlとffmpegの実行ファイルを同じフォルダに置くだけで使用できます