見出し画像

TweetやYouTubeの動画を簡単にダウンロードする方法(macOS版)

2024/4/9追記
youtube-dlの開発がストップしているとのことで別のプロダクトを紹介する改訂版を書きました。本記事ではなく、そちらをご参照ください。以下にリンクを置いておきます。

お疲れ様です。藤原です。今日はTweetに添付された動画やYouTubeの動画を簡単にダウンロードする方法について書こうと思います。なるべく簡単に書こうと思いますのでしばしお付き合いください。

※本記事はMacを利用の方(macOS)限定です。Windowsはここ10年以上使ってないので分かりません。予めご了承ください。


想定される利用シーン

誰かが作成したオリジナル動画を、後でまた見返すときの参照用に手許に残しておきたいというような利用ケースを想定しています。

動画のURLをお気に入りに入れることでもこの要件は実現できますが、作者が動画を消してしまったらもう二度と見ることができなくなりますから、安全のためにダウンロードしてローカルに置いておくと結構便利です。オフラインでも見られますしね。

※当然のことですが、これでダウンロードした動画を別のプラットフォームに撒いたり、パクツイしたりすることは著作権法やその他の法に触れるので絶対にしないでください。

Homebrewの導入

ダウンロードに使うソフトウェアをインストールする前に、それをインストールするためのソフトウェア(Homebrew)をインストールする必要があります。ややこしい。既に導入済みの方はこの章は飛ばして、次のステップに進んでOKです。

Homebrewを導入するには次のコマンドを実行してください。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

インストールが完了してもデフォルトでパスが設定されていない可能性があるので、その場合はHomebrewが導入された先に対してパスを設定します。以下は僕の場合の例です。

touch ~/.zshrc
open -e ~/.zshrc

開いたファイルに次の行を追加します。

export PATH="/opt/homebrew/bin:$PATH"

追加できたらファイルを保存して閉じ、ターミナルで次のコマンドを実行して変更を適用してください。

source ~/.zshrc

僕のMacの場合は、'/opt/homebrew/bin' にbrewがインストールされたので上記のパス設定になっていますが、違う方は適宜読み替えてください。

youtube-dlの導入

動画ダウンロードには'youtube-dl'を使います。これをインストールするには次のコマンドを実行してください。

brew install youtube-dl

前章の手順で brew にパスが通っているので、問題なくインストールできると思います。なお、ソフトウェアの名前にyoutubeとありますが、Tweetの動画も問題なくダウンロードできますのでご安心ください。

使い方はこうです。

youtube-dl [動画のURL]

[動画のURL] はTwitterであれば当該Tweetの時間の部分をクリックして得られるTweetのURLを使えば良いですし、YouTubeの場合はその動画ページのURLをそのまま使えば良いです。

注意点としては、YouTubeの場合はURLの中に「?」や「&」が含まれているため、そのまま特殊文字を引数として渡すと解釈がうまくいきません。その場合はURLを「"」か「'」で囲ってください。

// コマンド実行例
youtube-dl "https://www.youtube.com/watch?v=UcVYzSQQ7HI"

これで基本的には終了です。ただ、このままだと少し不便だったりするので、もっと使いやすく改善していきます。

不便なままでもこれで良い、という方はここで読むのを終えてもらって構いませんが、もう少しお付き合いいただけるともっと便利に使えると思います。

ダウンロード先の設定

上記コマンドをそのまま実行すると実行したカレントディレクトリに動画が落ちてくるので、例えば常に '~/Downloads' フォルダに格納したい場合はコマンドを次のように改善してください。

youtube-dl -o '~/Downloads/%(title)s.%(ext)s' [動画のURL]

これによって、ダウンロードした動画を'~/Downloads'フォルダに、動画のタイトルと拡張子を使ったファイル名で保存することができます。

多重化処理で高速化

このコマンドでは、YouTubeからのダウンロードがかなり遅いときがあります。幸い、'youtube-dl'は外部ダウンローダーをサポートしているので、それらと連携して作動させることができます。

ここでは 'aria2' を使って例をご紹介します。

brew install aria2

まずは上記コマンドでMacにaria2を導入します。導入できたら前述のダウンロードコマンドを次のように改善してください。

youtube-dl -o '~/Downloads/%(title)s.%(ext)s' --external-downloader aria2c --external-downloader-args "-x 16 -s 16 -k 1M" [動画のURL]

この例では、-x 16-s 16オプションで最大16の同時接続を許可し、-k 1Mオプションで各接続の最小セグメントサイズを1MBに設定しています。

これによりかなり高速化できていると思います。このオプションのありなしで比べてみるとその差が実感できるかと思います。

mkvファイルをmp4化して落とす

上記コマンドをそのまま使うと、YouTubeの拡張ファイルであるmkvで動画が落ちてくることがあります。後からmp4へ変換することもできますが(やり方は後述)ダウンロードの段階で指定することもできます。

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' -o '~/Downloads/%(title)s.%(ext)s' --external-downloader aria2c --external-downloader-args "-x 16 -s 16 -k 1M" [動画のURL]

これにより最高品質のMP4形式の動画と、最高品質のM4A形式の音声を選択し、それらを1つのMP4ファイルに結合しダウンロードしてくることが可能になります。

ただし、すべての動画でこのオプションが常に機能するわけではありません。その場合は、FFmpegを使用してダウンロード後に動画形式を変換してください。

FFmpegによる変換(mkv→mp4)

いつもの通り'FFmpeg'を導入します。以下のコマンドです。

brew install ffmpeg

次にffmpegを実行します。

ffmpeg -i input.mkv -codec copy output.mp4

上記のコマンドでは、input.mkvが変換元のMKVファイル、output.mp4が変換後のMP4ファイルです。-codec copyオプションは、ビデオとオーディオのコーデックを変更せず、そのままコピーするという意味です。

これでMKVもMP4に変換できたと思いますので、いつもの再生アプリで見ることができると思います。

シェルスクリプト化による省力化

もう一度、動画をダウンロードするコマンドを記載します。

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' -o '~/Downloads/%(title)s.%(ext)s' --external-downloader aria2c --external-downloader-args "-x 16 -s 16 -k 1M" [動画のURL]

これを毎回やるのは大変なので、僕はこのコマンドが記載されたシェルスクリプトを作成してパスを通し、実行権限を付与して、そのシェルスクリプトにURLを渡すことで対応しています。手順を以下に記載します。

パスが通っている場所、例えば今回の例では '/opt/homebrew/bin' にシェルスクリプトを作成します。nanoを使う例を以下に示します。

cd /opt/homebrew/bin
nano dlTweetMovie.sh

テキストエディタが開いたら次のスクリプトをコピペしてください。

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage: ./dlTweetMovie.sh [Tweet URL]"
    exit 1
fi

tweet_url="$1"
output_path="~/Downloads/%(title)s.%(ext)s"

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' -o "$output_path" --external-downloader aria2c --external-downloader-args "-x 16 -s 16 -k 1M" "$tweet_url"

コードを入力し終わったら、ファイルを保存してエディタを閉じます。nanoの場合は、Ctrl + Xを押してからYを押し、Enterを押します。

保存できたら、ターミナルで以下のコマンドを実行して、シェルスクリプトに実行権限を与えます。

chmod +x dlTweetMovie.sh

これで準備完了です。後はこのシェルスクリプトに対して引数で動画のURLを渡せばOKです。YouTubeの時は「"」で囲むのを忘れないでくださいね。

dlTweetMovie.sh "https://www.youtube.com/watch?v=UcVYzSQQ7HI"

これの良い所は、既にdlTweetMovie.shにパスが通っているので、dlTくらい入力したところでタブキーを押すことで一気に'dlTweetMovie.sh 'まで補完されるところです。

その後、クリップボードにコピーしてある動画URLをペーストするだけになるので、動画ダウンロードの手順としては、

dlT → Tabキー → " → command+p → " → Enter

になるので、かなりスムーズにダウロードまでいけると思います。Tweetの場合は「"」も必要ないですから、

dlT → Tabキー → command+p →  Enter

でダウンロードまで行けます。

おわりに

僕の環境のケースで今回のnoteは記載しましたが、おそらく皆さんも同じなのではないかと思います。皆さんの参考になれば幸いです。

なお、しつこいようですが冒頭でも記載した通り、これでダウンロードした動画を別のプラットフォームに撒いたり、パクツイしたりすることは著作権法やその他の法に触れるので絶対にしないでください。

ルールを守って快適な動画ダウンロードライフをお過ごしいただけると幸いです。

サポート代は大好きなスタートアップへの取材費に充てさせていただきます