準備
ffmpeg
(streamlink
が依存してる)とstreamlink
をbrew
で入れる
brew install ffmpeg
brew install streamlink
以下の通り環境変数PATH
にffmpeg
がないと死なので確認する
man streamlink
...
FFmpeg options
--ffmpeg-ffmpeg FILENAME
FFMPEG is used to access or mux separate video and audio streams. You can specify the location of the
ffmpeg executable if it is not in your PATH.
Example: "/usr/local/bin/ffmpeg"
...
使い方
hlsでも非hlsでも大丈夫
- 対象のwebサービスに行って動画を再生して
- 「webインスベクタ」を表示,「ネットワーク」を表示
- 頑張って拡張子が
.m3u8
か.mp4
のファイルを検索
- 前者がhls,後者が非hls
- そのファイルを落とした時のcURLをコピー
- cURLから標準urlだけを抽出
streamlink '[url]' best -o temp
ffmpeg -i tmp -c copy file.mp4
何が起きてるか
streaming系サービスでのhttp通信をうまいこと管理して,hls処理ができるffmpeg
に渡してくれてる
ffmpeg
に不足してるhttp管理機能とcurl
に不足してるhls処理機能を両立してくれてこれは…ありがたい
細かいオプション
ニコ動のオプション機能でログイン可能とかセッションID持ち込みとかあったりするらしいな
利点!
独立してセッションを構築してくれるからクッソ楽
もしそれができない事情があるなら適宜にhttpのヘッダ情報を引数で渡せば良いので問題はない
欠点?
処理をせず.m3u8
+.ts
の形式に落とすのは想定外の動作
hlsだと.mp4
になったりならなかったりするのでもっかいffmpeg
をかける習慣をつけよう
まぁ変換前の形式で落とす必要性もなさそうだし,なんならhlsへの変換もやれるっぽいし(今回はそこには触れないけど)