もう、無限に広告がポップしてくる詐欺ソフトに悩まされることはありません。
我々エンジニアはプログラミングとCUIという頼れる味方がいます。
この記事を読むと
- ターミナルから簡単&爆速にYoutubeから動画をダウンロードできます。
- ファイル形式の変換と時間指定の切り抜きのお勧め方法もカバー
環境
- Macbook Pro 2017 13インチ
- MacOS Catalina ヴァージョン10.15.6
やり方比較
没案1.Youtube Premium
最も簡単にYoutubeの動画をオフラインで利用する方法はYoutube Premiumに登録することです。料金も月1000円程度と破格。
しかしなんでYoutube Premiumではダメなのかというと、PCのローカルに落とせないからです。例えば、私の場合は英語音声のみで字幕無しの動画に対して、Amazon Transcribeを利用して文字起こしや翻訳を行うのがそもそもの動機でした。また、スマホアプリ上でしかオフライン利用できません。
やはり普通のファイルとしてローカルに落とすのが一番取り回しが良いです。
没案2.非公式のWebアプリ・Webサイト
無限に広告がポップしてくるだけで永遠にダウンロードできません。仮に運よく機能したとしてもダウンロードに膨大な時間がかかります。また、一定時間までのファイルにしか対応していません。
あと、そのようなWebアプリ・Webサイトは存在が違法です。
(後述するやり方で、「個人利用の範囲」かつ「合法的にYoutubeアップロードされた動画」をダウンロードするのは違法ではないという認識です。ただし、youtubeの利用規約には違反する可能性はあります)
ytdlがベストアンサー
私がお勧めするのはytdlを利用してターミナルからダウンロードするやり方です。
ytdlはnode.jsのライブラリで、簡単にインストールできます。
ytdlならダウンロードが爆速です。
また、ファイルが長時間でもOK。
そして当然ですが、ターミナルなので一切広告等出てきません。
ytdlの使い方
導入も利用も簡単ですが、いくつか注意点があります。一言で言えば、ytdlには複数の機能がありますが、あくまでファイルのダウンロードのみに使用するべきです。
環境構築
お馴染みのnpmコマンドを使って、グローバルにダウンロードします。
npm -g install ytdl
動作確認
ytdlのインストールが完了したら、実際にYoutubeからファイルをダウンロードできるか確認してみましょう。
お好きなディレクトリのターミナルから、下記を実行してください。desktop辺りが手頃でしょうか。
ytdl "http://www.youtube.com/watch?v=_HSylqgVYQI" > myvideo.mp4
ダウンロードできたでしょうか。
コマンドの意味を解説すると、ytdl
の後の""
内でダウンロードしたいYoutube動画のURLを指定して、myvideoという名前でmp4ファイルとしてダウンロードしています。
注意点
ffmpegはインストールしない。
公式ページに紹介されているように、ffmpeg
を併せてインストールするとファイル形式の変換や時間指定による切り抜き等のオプションが利用できるようになり、一見便利そうです。しかし、例えばmp3としてダウンロードすると、一見変換に成功しているのですが、実はファイルが壊れてしまいます。ファイルが壊れると何が問題かと言うと、一部のプラットフォーム上でしかファイルが動作しなくなります。例えばMacで言うと、Quick Time Playerではファイルを再生できるが、iTunesではファイルを認識できないので、再生どころかライブラリへの追加もできません。
また、ffmpeg
のインストール自体も、環境を汚染するのでお勧めしません。ffmpeg
がかなり重い=大量のモジュールとの依存関係がありながら、そのどれもが古いので、メインで使用しているnode.jsのモジュールと競合を引き起こす危険性があります。
ファイルダウンロードのみに使用する
ファイル形式の変換も時間指定の切り抜きも、どちらもMacのデフォルトの機能やアプリで簡単に実行可能です。CUIをGUIで、それぞれ適したことに使い分けましょう。詳しくは後述しますが、ファイル形式の変換はFinder、時間指定の切り抜きはiMoviesを使用するのがお勧めです。
お勧め運用方法
ダウンロード
先ほど紹介したコマンドではいちいちファイル名を手動で入力しなくてはいけません。
下記のコマンドでは、ファイルのタイトル - 作者
をファイル名としてダウンロードすることができます。
ytdl -o "{author.name} - {title}" "http://www.youtube.com/watch?v=_HSylqgVYQI"
あるいは、動画のタイトルだけも良いという場合は下記でも。
ytdl -o "{title}" "http://www.youtube.com/watch?v=_HSylqgVYQI"
ファイル形式変換
ここでは音声ファイルに変換してみましょう。
Finderからファイルを選択したら右クリックして、一番下の「選択したビデオファイルをエンコード」をクリックしてください(ちなみに、「選択したビデオファイルをエンコード」は複数ファイルを選択した状態でも可能です)。
Image may be NSFW.
Clik here to view.
「メディアをエンコード」というウィンドウが開くので、設定:
をオーディオのみ
に変更します。最後に'続ける'を押したら完了です。元のビデオファイルとは別に、音声ファイルが作成されます。
Image may be NSFW.
Clik here to view.
先述した通り、「選択したビデオファイルをエンコード」は複数ファイルを選択した状態でも可能なので、ある程度貯めてからまとめて変換するとラクです。
指定した時間で切り抜き
iMovieを使用します。
「新規作成(大きな「+」アイコン)」をクリックしたら、「ムービー」を選択します。
Image may be NSFW.
Clik here to view.
すると、動画の編集画面が開きます。
画面左上の「ファイル」から「メディアを読み込む」をクリックします。
Image may be NSFW.
Clik here to view.
またウィンドウが開くので、編集したいファイルを選択したら、画面右下の「選択した項目を取り込む」をクリックしてください。
Image may be NSFW.
Clik here to view.
iMovieにファイルが追加されました。
Image may be NSFW.
Clik here to view.
上の画面に追加されたファイルを、下の編集画面にドラッグ&ドロップしてください。
Image may be NSFW.
Clik here to view.
まずはクリップを分割します。
ファイルの適当なところで右クリックして、「クリップを分割」をクリック。
Image may be NSFW.
Clik here to view.
ファイルがクリップに分割されました。
クリップをcommand + Cでコピーしたら、いったんこのプロジェクトを閉じましょう。
新しくプロジェクトを作成します。そして新しく作成したプロジェクトの編集画面(下の方)でcommand + Vで貼り付けます。
画面左上の「ファイル」から「共有」をクリックします。
Image may be NSFW.
Clik here to view.
ファイルの形式(フォーマット)を任意のものに選択して、「次へ」でファイルを書き出します。
Image may be NSFW.
Clik here to view.
こういう場合は明らかにCUIよりGUIの方が適していますね。
当初はダウンロードする時点で開始地点と終了地点を指定していたのですが、秒数に変換して指定しなくていけないので、かなり面倒でした。計算ミスも頻発しましたし、毎回ダウンロードし直さなくてはいけないのも大変でした。
参考文献
Image may be NSFW.
Clik here to view.
Node.jsデザインパターン 第2版Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
Node.js超入門 第3版Image may be NSFW.
Clik here to view.