
YouTubeなど幾つかの動画サイトから動画をダウンロードできるyoutube-dlが、RIAA(全米レコード協会)から削除要請が出されてGitHubからリポジトリが削除されたのが10月下旬。RIAAの主張が強引だったこともあってか反論が相次ぎ、削除要請が不当と判断されてリポジトリが復活した模様。ただ、11月上旬時点で既に幾つかyoutube-dl関連のリポジトリが出来ていて、それが削除されていなかったし、pipでインストール・更新することも可能だったので、youtube-dl関連全てが一斉に削除かつ関連リポジトリ作成も禁止のような扱いではなかったみたい。
「がとらぼ」の中の人はYouTubeにはゴミ以下の動画をまれに上げる程度だけど、作った動画(アップロード前のファイル)を保存せずに捨てることが多いので、アップロードした動画を取り戻す意味でyoutube-dlを使うことがある。もちろん、YouTubeからダウンロードした動画はアップロード前の動画より遥かに劣化したものなのでクオリティーを求める人は作成した動画を捨てたりせずにバックアップしておいて欲しい。
で、youtube-dlはそんな使い方なので1年に1度触る触らないか程度。当然使い方をすぐに忘れてしまう。
そこで、自分向けの備忘録。
youtube-dlのインストール・更新
youtube-dlはバージョンが古いと使えないことが多い。
なのでLinuxのパッケージなどに頼るとおよそロクなことにならない。
つまりソフトウエア管理ツール・パッケージでインストールするとハズレる。手動でインストール・更新するようにしたい。
使用頻度が低いと使用しようとする度に更新しないといけないかも。
http://rg3.github.io/youtube-dl/download.html
https://youtube-dl.org/ で最新版のバージョンを確認。(確認だけ)
$ which pip または $ which pip3
$ sudo apt install python-pip または $ sudo apt install python3-pipyoutube-dlのインストールまたは更新
$ sudo pip install --upgrade youtube_dl または $ sudo pip3 install --upgrade youtube_dl
インストール・更新とも同じで、これだけ。(--upgradeの代わりに-Uでも可)
更新の例 (ちょっと古いメモだけど)
$ sudo pip install -U youtube-dl
Collecting youtube-dl
Downloading https://files.pythonhosted.org/packages/41/4f/b9d6a4dff6cf176d593d494deade44db19654adc3188b7e2842f21a1f31b/youtube_dl-2019.4.24-py2.py3-none-any.whl (1.8MB)
100% |████████████████████████████████| 1.8MB 344kB/s
Installing collected packages: youtube-dl
Found existing installation: youtube-dl 2019.2.18
Uninstalling youtube-dl-2019.2.18:
Not removing or modifying (outside of prefix):
/usr/bin/youtube-dl
Successfully uninstalled youtube-dl-2019.2.18
Successfully installed youtube-dl-2019.4.24
あと、いろいろするならffprobeとffmpegが必要になるようなのでシステムに入っていないならインストール。
おそらくffmpegをインストールすると両方解決する筈。
$ sudo apt install ffmpeg
youtube-dlの使い方
基本形$ youtube-dl 動画URL または $ youtube-dl 動画ID または $ youtube-dl プレイリストID (プレイリストIDの前に -i を追加するとエラーを無視するのでオススメ)
YouTubeだと https://www.youtube.com/watch?v=00000000000 のようなのが動画URL、そのv=の後の00000000000が動画ID。
https://www.youtube.com/watch?v=00000000000&list=AAAAAAAAAAAAA のlist=の後のAAAAAAAAAAAAAがプレイリストID。
とても簡単だが、ダウンロードしたファイルの動画フォーマットの種類や解像度や音声形式が期待していたものとは違うかもしれない。
YouTubeだと1つの動画と思っているものが、実は複数の形式で保管されている。また、動画ファイルの種類が複数あるだけでなく、動画ファイルに含まれる動画・音声のフォーマットも複数ある。フォーマットを指定すれば期待通りの動画・音声を取得できる。
対象動画のビデオと音声のリストを表示する
$ youtube-dl --list-formats 動画IDまたは動画URL
実行例
$ youtube-dl --list-formats 00000000000
[youtube] 00000000000: Downloading webpage
[youtube] 00000000000: Downloading video info webpage
[youtube] 00000000000: Downloading js player vflq4d8Te
[info] Available formats for 00000000000:
format code extension resolution note
171 webm audio only DASH audio 126k , 1fps, vorbis@128k, 10.41MiB
140 m4a audio only DASH audio 128k , m4a_dash container, mp4a.40.2@128k, 12.22MiB
278 webm 256x144 144p 97k , webm container, vp9, 24fps, video only, 5.85MiB
160 mp4 256x144 144p 119k , avc1.42c00c, 12fps, video only, 10.48MiB
242 webm 426x240 240p 160k , vp9, 24fps, video only, 6.30MiB
134 mp4 640x360 360p 248k , avc1.4d401e, 24fps, video only, 14.27MiB
133 mp4 426x240 240p 250k , avc1.4d4015, 24fps, video only, 23.46MiB
243 webm 640x360 360p 285k , vp9, 24fps, video only, 11.08MiB
244 webm 854x480 480p 438k , vp9, 24fps, video only, 16.46MiB
135 mp4 854x480 480p 525k , avc1.4d401e, 24fps, video only, 29.26MiB
247 webm 1280x720 720p 814k , vp9, 24fps, video only, 30.29MiB
136 mp4 1280x720 720p 1077k , avc1.4d401f, 24fps, video only, 60.78MiB
248 webm 1920x1080 1080p 1323k , vp9, 24fps, video only, 52.05MiB
137 mp4 1920x1080 1080p 2034k , avc1.640028, 24fps, video only, 130.45MiB
17 3gp 176x144 small 81k , mp4v.20.3, mp4a.40.2@ 24k (22050Hz), 7.84MiB
36 3gp 320x180 small 225k , mp4v.20.3, mp4a.40.2 (22050Hz), 21.73MiB
18 mp4 640x360 medium 343k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 32.99MiB (best)
行頭の数字がフォーマットコードなので、上の例ではmp4の動画の1920x1080の解像度は137、音声のm4aは140ということが判る。
ダウンロードしたい動画によって存在するフォーマットが違うことがあるので、例えばどの動画でもフォーマットコード137のmp4動画1920x1080があるとは限らない。
フォーマットを指定してダウンロード
上で動画に含まれるフォーマットの種類を調べたら、取得するフォーマットを決める。
たとえばm4a(140)の音声が欲しいとする。
$ youtube-dl -f 140 動画IDまたは動画URL
動画と音声のフォーマットをそれぞれ希望の種類でダウンロード後にマージしたいことはよくある。
動画に含まれる動画(映像)と音声のフォーマットの種類を調べたら、欲しい組み合わせでを決める。
たとえば、上のmp4動画1920x1080 (137)とma4音声でダウンロードしたいとする。出力はmp4形式とする。
$ youtube-dl -f 137+140 --merge-output-format mp4 動画IDまたは動画URL
存在しないフォーマットは指定不可
ダウンロードしてFLACに変換
音声だけライブラリ化したいということがある。編集にかけるだけならダウンロードしたファイルを変換せずにそのまま利用する方が良いとは思うが、好みの形式の音声ファイルにしてしまいたいことってある筈。今回はFLACにする例。
$ youtube-dl -x --audio-format flac 動画IDまたは動画URL FLACを生成するだけでなく、ダウンロードした動画を残すなら -k を付ける $ youtube-dl -k -x --audio-format flac 動画IDまたは動画URL
FLACは可逆圧縮なので音声が劣化しないとはいえ、YouTubeにアップロードしたことでアップロード前の音声よりは劣化してしまっていると思われる。ただし、その劣化した音声をさらにmp3などに再変換するよりははるかにマシ。
同じようなYoutubeダウンローダサービスのy2mateが問題にならないのは、「中華系だからなんだろうか?」w
そういえば、MS Office互換で商用向けのWPS Office(KING Software=中華系)に対しても、MSはしり込みしているなぁ……