ライブ動画をダウンロードできるコマンド
はじめに
YoutubeやTwitchのライブ動画をダウンロードしたくなり、探して livestreamerというものを見つけた。しかし、 リポジトリ見ると、
Command-line utility that extracts streams from various services and pipes them into a video player of choice. No longer maintained, use streamlink or youtube-dl instead.
とあり、開発終了して、メンテナンスしていないとある。その代わりにstreamlink
か
youtube-dl
を使うようにとあった。
そこで、streamlink
を使って、ライブ動画をダウンロード出来ないかと思い、調べてみた。
streamlinkとは
streamlinkは、コマンドラインツールで、livestreamのフォークプロジェクト。 Youtube LiveやTwitchなどのストリーム動画を動画プレイヤーで再生したり、ダウンロードしたりすることができるコマンドラインツール。
サイト | url |
---|---|
github | https://github.com/streamlink/streamlink |
ドキュメント | https://streamlink.github.io/ |
サポートされているサイト一覧 | http://docs.livestreamer.io/plugin_matrix.html#plugin-matrix |
使い方
サポートされているサービスは、
- Twitch.tv
- YouTube.com
- Livestream.com
- Dailymotion.com
などが上げられている。 サポートされているサイトはここに一覧がまとめられている。
仮想環境作る
streamlinkをインストールする方法はいくつかあるが、 今回はanacondaで仮想環境作ってインストールした。
まず、streamlinkという名前の仮想環境を作った。
conda create -n streamlink python=3.8
仮想環境を起動。
conda activate streamlink
インストール
次に、streamlinkをインストールする。 色々なインストール方法があるが1、 今回は、pipを使う方法でインストールした。
pip install streamlink
インストールすると、コマンドstreamlink
が使えるようになっている。
バージョンを確認してみると、streamlink 1.4.1
であった。
streamlink --version
streamlinkコマンドを使う
使い方は、streamlink URL
で解像度を調べて、streamlink URL 解像度
で動画プレイヤーが起動される。ファイルを保存する時は、streamlink URL 解像度 -o ファイル名
でファイルに保存される。
streamlink URL
でurlを指定することで、解像度などを取得する。
streamlink https://www.youtube.com/watch?v=coYw-eVU0Ks
結果は、下のようなものを得られて、144pから1080pまであるのがわかる。
144pと1080pはそれぞれ、最低画質と最高画質で、worst
、best
とついている。
[cli][info] Found matching plugin youtube for URL https://www.youtube.com/watch?v=K7r2cBYeWn8 Available streams: 144p (worst), 240p, 360p, 480p, 720p, 1080p (best)
1. 動画プレイヤーで再生
streamlink URL 画質
で、実行する。画質は上で調べたものを指定する。これはbest
、worst
とすることでも、それぞれ最低画質、最高画質を指定できる。1080p
と指定した。
streamlink https://www.youtube.com/watch?v=K7r2cBYeWn8 1080p
最高画質なので、1080p
の代わりに、best
でも大丈夫。
streamlink https://www.youtube.com/watch?v=K7r2cBYeWn8 best
実行すると、下のような情報が表示され、ビデオプレイヤーのVLCが起動して、ライブが映し出された。 (すでにVLCプレイヤーはダウンロードしていた。)
[cli][info] Found matching plugin youtube for URL https://www.youtube.com/watch?v=K7r2cBYeWn8 [cli][info] Available streams: 144p (worst), 240p, 360p, 480p, 720p, 1080p (best) [cli][info] Opening stream: 1080p (hls) [cli][info] Starting player: "C:\Program Files\VideoLAN\VLC\vlc.exe"
2. ファイルに保存
ファイルに保存するには、-o ファイル名
として保存する。
streamlink https://www.youtube.com/watch?v=K7r2cBYeWn8 best -o file.ts
止めるときは、ctr+cを押したら止まった。ファイルがすでに存在する時は、
File file.ts already exists! Overwrite it? [y/N]
と出てくるので、
y
を入力して上書きする。
保存する時間を指定するには、--hds-duration
というオプションを使って、
指定する。[HH:]MM:SS
の形式。しかし、実行してみると、
指定した時間とずれたりすることもある。
下のものは、20秒間ファイルに保存するサンプル。20秒間の動画をfile20s.ts
というファイル名で保存している。
streamlink https://www.youtube.com/watch?v=K7r2cBYeWn8 best -o file20s.ts --hls-duration 00:00:20
動画ファイルで.ts
のファイルは知らなかったので、調べてみると、
トランスポートストリーム形式のデータらしい2。
そのままでは、再生できなかったので、mp4
のファイルに変換した。
変換は、オンラインの変換サービスや、ローカルで変換したいときは、ffmpeg
などを使って出来る。
オンライン変換サービスを使う時
Convertioというオンラインサービスを使い.ts
から.mp4
のファイルへ変換も出来る。
変換前のファイルをサイトにアップロードして、変換を押すことで、mp4へと変換してくれる。 変換後に、ダウンロードボタンを押して、ダウンロード出来る。
ffmpegを使う時
ffmpegのインストール
conda install -c menpo ffmpeg
ffmpegを使ってtsファイルをmp4ファイルへ変換。-i 入力ファイル
で変換元のファイルを指定して、出力ファイルも指定して実行することで変換が開始される。
下は、入力ファイルがfile.tx
で出力ファイルがoutput.mp4
である。
ffmpeg -i file.ts output.mp4
実行すると、出力ファイルoutput.mp4
が生成された。開いて見ることも出来た。
まとめ
Youtube Liveなどのライブ動画をダウンロードできるstreamlink
を用いて、
ライブ動画をダウンロードする方法を調べた。
.ts
という形式で保存出来る。しかし、よく使うmp4などの形式に変換する必要
があった。