以前の記事の更新みたいな感じ。
私の好きなYouTubeチャンネルが一部動画をYouTubeから削除してしまった。収益化の都合なのだろう。
そんなことになってしまってからでは遅いのだが、今からできる対応策としてyoutube-dlの使い方を紹介する。
下準備

youtube-dlとFFmpegをダウンロードしておく。
今回私はyoutube-dlは最新版を、FFmpegはffmpeg-4.2.1-win64-staticを使った。
youtube-dl.exeとffmpeg.exeを同一フォルダ内に入れておく。このフォルダで実行する前提で話を進めていく。
使用コマンド紹介
まずは私の使用しているコマンドを紹介する。
cd /d %~dp0
youtube-dl -i -f bestvideo+251/bestvideo+bestaudio/best --merge-output-format mkv [チャンネルURL] -o "%%(upload_date)s_%%(title)s_%%(id)s"
youtube-dlのreadmeはこちら
今回サンプルとして使わせていただく動画はこちら。ネコの毛までよく見える。
8K動画なんて再生できないだろうと思っていたが自分のPCでは再生できた。ありがとうGTX1070。
cd /d %~dp0
最初の行の「cd /d %~dp0」はカレントディレクトリをバッチファイルの置いてあるディレクトリにするという意味。
別のバッチファイルからバッチファイルを呼び出す時に、同一ドライブでないとちゃんと認識してくれないのでこういった記述を行った。
youtube-dl オプション
-i
–ignore-errors を -i と省略可能
ダウンロード時にエラーが出ても無視して次のダウンロードを続ける。いちいち止まらないのでプレイリストやチャンネル一括DLの時にはこれをつけておくといい。
-f
–format を -f と省略可能
format codeの指定ができる。format codeは –list-formats で取得できる。詳しくは後半で解説する。
–merge-output-format
動画のみと音声のみのファイルを指定する場合は勝手に結合してくれるが、webmに入るならwebmという拡張子になったり、mp4になったりする。
フォーマットによって拡張子が変わるのは面倒なので、何でも入るコンテナのmkvを指定。全部mkvに一本化してほしい。
-o
–output を -o と省略可能
ファイル名の指定が可能。詳しくは公式リファレンスや詳しく紹介しているサイトを参照。
“%%(upload_date)s_%%(title)s_%%(id)s” と指定して必ずアップロード日を入れるようにしている。こうすることでファイル名でソートしてもちゃんと並ぶ。
念の為動画IDも入れて同じ動画名やライブ放送名でも上書きされることがないようにした。
format codeをいろいろ試す
-F もしくは –list-formats をオプションで指定することで、動画のformat codeを一覧で見ることができる。
youtube-dl -F https://www.youtube.com/watch?v=egSvdEJZRBk
上記を実行すると以下のようなformat code一覧が出力される。8K動画なのでフォーマット一覧が長い。めちゃくちゃ長い。
D:\youtube-dl>youtube-dl -F https://www.youtube.com/watch?v=egSvdEJZRBk
[youtube] egSvdEJZRBk: Downloading webpage
[youtube] egSvdEJZRBk: Downloading video info webpage
[info] Available formats for egSvdEJZRBk:
format code extension resolution note
249 webm audio only tiny 59k , opus @ 50k (48000Hz), 7.82MiB
250 webm audio only tiny 78k , opus @ 70k (48000Hz), 10.38MiB
140 m4a audio only tiny 131k , m4a_dash container, mp4a.40.2@128k (44100Hz), 18.87MiB
251 webm audio only tiny 157k , opus @160k (48000Hz), 20.90MiB
394 mp4 256x144 144p 89k , av01.0.00M.10.0.110.09.16.09.0, 30fps, video only, 9.13MiB
160 mp4 256x144 144p 112k , avc1.4d400c, 30fps, video only, 7.88MiB
278 webm 256x144 144p 122k , webm container, vp9, 30fps, video only, 12.04MiB
395 mp4 426x240 240p 203k , av01.0.00M.10.0.110.09.16.09.0, 30fps, video only, 15.74MiB
330 webm 256x144 144p60 HDR 245k , vp9.2, 60fps, video only, 25.10MiB
133 mp4 426x240 240p 246k , avc1.4d4015, 30fps, video only, 15.69MiB
242 webm 426x240 240p 263k , vp9, 30fps, video only, 21.30MiB
396 mp4 640x360 360p 381k , av01.0.01M.10.0.110.09.16.09.0, 30fps, video only, 29.46MiB
331 webm 426x240 240p60 HDR 512k , vp9.2, 60fps, video only, 57.19MiB
243 webm 640x360 360p 535k , vp9, 30fps, video only, 40.68MiB
134 mp4 640x360 360p 634k , avc1.4d401e, 30fps, video only, 43.26MiB
397 mp4 854x480 480p 718k , av01.0.04M.10.0.110.09.16.09.0, 30fps, video only, 56.16MiB
244 webm 854x480 480p 838k , vp9, 30fps, video only, 74.40MiB
332 webm 640x360 360p60 HDR 1072k , vp9.2, 60fps, video only, 131.51MiB
398 mp4 1280x720 720p60 1367k , av01.0.08M.10.0.110.09.16.09.0, 60fps, video only, 136.92MiB
135 mp4 854x480 480p 1543k , avc1.4d401f, 30fps, video only, 89.65MiB
247 webm 1280x720 720p 1831k , vp9, 30fps, video only, 158.02MiB
333 webm 854x480 480p60 HDR 2036k , vp9.2, 60fps, video only, 263.76MiB
399 mp4 1920x1080 1080p60 2435k , av01.0.09M.10.0.110.09.16.09.0, 60fps, video only, 251.53MiB
302 webm 1280x720 720p60 2859k , vp9, 60fps, video only, 260.65MiB
136 mp4 1280x720 720p 3083k , avc1.4d401f, 30fps, video only, 180.84MiB
248 webm 1920x1080 1080p 3781k , vp9, 30fps, video only, 300.20MiB
298 mp4 1280x720 720p60 4063k , avc1.4d4020, 60fps, video only, 329.72MiB
334 webm 1280x720 720p60 HDR 4819k , vp9.2, 60fps, video only, 631.95MiB
137 mp4 1920x1080 1080p 5025k , avc1.640028, 30fps, video only, 349.77MiB
303 webm 1920x1080 1080p60 5067k , vp9, 60fps, video only, 496.44MiB
299 mp4 1920x1080 1080p60 6836k , avc1.64002a, 60fps, video only, 643.51MiB
335 webm 1920x1080 1080p60 HDR 7180k , vp9.2, 60fps, video only, 976.81MiB
400 mp4 2560x1440 1440p60 7879k , av01.0.12M.10.0.110.09.16.09.0, 60fps, video only, 889.24MiB
271 webm 2560x1440 1440p 9814k , vp9, 30fps, video only, 999.14MiB
308 webm 2560x1440 1440p60 13944k , vp9, 60fps, video only, 1.54GiB
401 mp4 3840x2160 2160p60 16038k , av01.0.13M.10.0.110.09.16.09.0, 60fps, video only, 1.82GiB
336 webm 2560x1440 1440p60 HDR 17010k , vp9.2, 60fps, video only, 2.28GiB
313 webm 3840x2160 2160p 20676k , vp9, 30fps, video only, 2.33GiB
402 mp4 7680x4320 4320p60 23763k , av01.0.17M.10.0.110.09.16.09.0, 60fps, video only, 1.99GiB
315 webm 3840x2160 2160p60 27941k , vp9, 60fps, video only, 3.50GiB
337 webm 3840x2160 2160p60 HDR 30235k , vp9.2, 60fps, video only, 4.07GiB
571 mp4 7680x4320 4320p60 35897k , av01.0.17M.10.0.110.09.16.09.0, 60fps, video only, 3.29GiB
272 webm 7680x4320 4320p60 53235k , vp9, 60fps, video only, 3.15GiB
43 webm 640x360 360p , vp8.0, vorbis@128k, 109.72MiB
18 mp4 640x360 360p 566k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 82.55MiB
22 mp4 1280x720 720p 1369k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best)
この中から一番高画質な映像と一番高音質な音声をダウンロードしたいと思うのが人の性。
指定なし
D:\youtube-dl>youtube-dl https://www.youtube.com/watch?v=egSvdEJZRBk [youtube] egSvdEJZRBk: Downloading webpage [youtube] egSvdEJZRBk: Downloading video info webpage [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f272.webm [download] 100% of 3.15GiB in 01:52 [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f251.webm [download] 100% of 20.90MiB in 00:00 [ffmpeg] Merging formats into "Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.webm" Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f272.webm (pass -k to keep) Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f251.webm (pass -k to keep)
まずは何も指定せずにyoutube-dlの思うがままにダウンロードしてもらう。
ここで指定されたのはf272とf251。
f272はvp9の4320p60の映像のみ。f251はopusの160k(ステレオで320k)の音声のみ。
best指定
D:\youtube-dl>youtube-dl -f best https://www.youtube.com/watch?v=egSvdEJZRBk
[youtube] egSvdEJZRBk: Downloading webpage
[youtube] egSvdEJZRBk: Downloading video info webpage
[download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.mp4
[download] 100% of 199.62MiB in 00:05
一覧で取得した際に書いてある(best)をダウンロードしたのだろう。動画のサイズは199.62MiB。
どこがベストなのだろうか……
bestvideo+bestaudio指定
D:\youtube-dl>youtube-dl -f bestvideo+bestaudio https://www.youtube.com/watch?v=egSvdEJZRBk [youtube] egSvdEJZRBk: Downloading webpage [youtube] egSvdEJZRBk: Downloading video info webpage [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f272.webm [download] 100% of 3.15GiB in 01:35 [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f251.webm [download] 100% of 20.90MiB in 00:00 [ffmpeg] Merging formats into "Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.webm" Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f272.webm (pass -k to keep) Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f251.webm (pass -k to keep)
何も指定をしなかった時と同じ結果になった。youtube-dlは優秀だ。
半年くらい前はそんなに優秀じゃなかったので1080pあたりをダウンロードしていたのだが、嬉しい修正だと思う。
しかしbestvideoはどういう基準で選んでいるのだろう。
f571とf272はどちらも4320p60なのだが、フォーマットが違う。f571はAV1コーデックでf272はvp9だ。
f571よりもf272のほうがビットレートが高いのでf272を指定したのだろう。 →
worst指定
D:\youtube-dl>youtube-dl -f worst https://www.youtube.com/watch?v=egSvdEJZRBk
[youtube] egSvdEJZRBk: Downloading webpage
[youtube] egSvdEJZRBk: Downloading video info webpage
[download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.webm
[download] 100% of 109.72MiB in 00:02
試しにworstを指定してみたら109.72MiBのf43(360p)をダウンロードしていた。
360pの中ならf18のほうが低画質だと思うし、144pとか240pとかは選ばないのだろうか。
worstvideo+worstaudio指定
D:\youtube-dl>youtube-dl -f worstvideo+worstaudio https://www.youtube.com/watch?v=egSvdEJZRBk [youtube] egSvdEJZRBk: Downloading webpage [youtube] egSvdEJZRBk: Downloading video info webpage WARNING: Requested formats are incompatible for merge and will be merged into mkv. [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f394.mp4 [download] 100% of 9.13MiB in 00:01 [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f249.webm [download] 100% of 7.82MiB in 00:00 [ffmpeg] Merging formats into "Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.mkv" Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f394.mp4 (pass -k to keep) Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f249.webm (pass -k to keep)
ついにf394(AV1 144p)とf249(opus 50k)が選ばれた。
動画を再生してみたが酷い画質で笑ってしまった。
571+251指定
D:\youtube-dl>youtube-dl -f 571+251 https://www.youtube.com/watch?v=egSvdEJZRBk [youtube] egSvdEJZRBk: Downloading webpage [youtube] egSvdEJZRBk: Downloading video info webpage WARNING: Requested formats are incompatible for merge and will be merged into mkv. [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f571.mp4 [download] 100% of 3.29GiB in 01:04 [download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f251.webm [download] 100% of 20.90MiB in 00:00 [ffmpeg] Merging formats into "Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.mkv" Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f571.mp4 (pass -k to keep) Deleting original file Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.f251.webm (pass -k to keep)
ダウンロードに成功し、再生してみると真っ暗。シークするとその場面の画像は出るがその後一切動かない状態になってしまう。
タスクマネージャーを開くと大変なことになっていた。GPUの再生支援が効いていない様子。
GPUはGTX1070を使用している
こちらも同様にGTX1070を使用
特定のフォーマットのみダウンロードしたい
youtube-dl -f 571,272 https://www.youtube.com/watch?v=egSvdEJZRBk
D:\youtube-dl>youtube-dl -f 571,272 https://www.youtube.com/watch?v=egSvdEJZRBk
[youtube] egSvdEJZRBk: Downloading webpage
[youtube] egSvdEJZRBk: Downloading video info webpage
[info] egSvdEJZRBk: downloading video in 2 formats
[download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.mp4
[download] 100% of 3.29GiB in 01:32
[download] Destination: Collection Of Animals 8K HDR 60FPS-egSvdEJZRBk.webm
[download] 100% of 3.15GiB in 01:59
フォーマットを指定する時はfをつけずに数字を書く。
カンマで区切ることで複数のフォーマットをダウンロードできる
WARNINGについて
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
webmのコンテナには入らないフォーマットを指定した時に上の表示がされる。勝手にmkvに入れてくれるので安心していい。
コメント