Streamlinkを使用してRTA並走ミラーのタイム合わせをする(同期を取る)
要約
Streamlinkとtsファイル再生可能な動画プレイヤーを組み合わせると、”-o”コマンドで配信映像をローカルにダウンロードしながら再生できるので同期を取りやすい&配信映像が必要な処理(並走で僅差だった場合の精査や見どころピックアップなど)がスピーディーに出来るよ!
RTAのミラーをする際、各並走者の映像をタイムで同期をとることがあります。それをStreamlinkを使ってやりましょうということで。
Streamlinkを使用してタイムの同期を取る場合は映像のシークが可能となる為、同期を非常に取りやすくなります。
大体の配信プラットフォームに対応していますが、録画と再生を並行して行う影響でプラットフォームによっては不安定になる可能性があります(Twitchでは問題ありませんでした)。
※(ニコニコ生放送)フォロー限定等ログイン情報が必要な放送を視聴する場合は、オプションコマンド
--niconico-email / --niconico-password 、もしくは --niconico-user-session
が必要となります。usersessionはログインしているブラウザで
https://api.ce.nicovideo.jp/api/v1/session.create?__format=xml
にアクセス等で確認してください。
https://streamlink.github.io/cli.html?highlight=niconico#cmdoption-niconico-email
こんな感じに動きます。
必要なもの
- Streamlink
- tsファイルを再生できる動画プレイヤー(VLC、MPC-HC、MPC-BE等。この記事ではMPC-BEを使用しています)
やり方
1. 必要なものをダウンロード、インストール
各ソフトのダウンロードリンクは以下となります。
-
Streamlink
https://github.com/streamlink/streamlink/releases
※exeファイル(streamlink-x.x.x.exe)をダウンロード、インストールしてください。 インストールは画面の指示に従ってください。基本的に変更する必要はありません。 -
VLC Media player
https://www.videolan.org/vlc/index.ja.html
2. 配信映像をダウンロードする
コマンドプロンプト、もしくはPowerShellを起動し、以下のように入力し、Enterキーを押して実行します。
streamlink {URL} {画質} -f -o "{保存先のパス}"
具体的にはこのように入力します。デスクトップ上にファイルを保存するようにしています。
- Twitchの場合
streamlink https://www.twitch.tv/xxxxxx 360p -f -o "C:\Users\ユーザー名\Desktop\stream1.ts"
- Youtube liveの場合
streamlink https://www.youtube.com/watch?v=xxxxxx 360p -f -o "C:\Users\ユーザー名\Desktop\stream1.ts"
・画質は、コマンドを実行するとAvailable streams:…で指定できる画質の一覧が返ってくるので、その中から指定してください。回線に余裕がある場合はbestと入力しておけば良いでしょう。
・オプション-f (force)は、保存先に指定したファイルが既に存在している場合に上書き確認をせず、強制的に上書き保存をするオプションです。ダウンロードした映像を残しておきたい場合はこのオプションを消し、保存先のファイル名をかぶらないように変更してください。
・回線が不安定な場合は、オプション –hls-segment-threads N (N:0-10, default=1)を追加してください。Nの数字が大きいほどバッファが増え、再生が安定する可能性があります。
・ダウンロードを強制的に停止したい場合は「Ctrl+C」と入力してください。
・PowerShellではコマンドの行末にスペース+#を入力することで、その先の文字列をコメントアウトすることができます。メモを残したい場合はPowerShellを使用したほうが良いかもしれません。 ・複数の配信を管理する場合はExcelやGoogleスプレッドシート等を活用すると良いでしょう。行をコピーしてコマンドプロンプトやPowerShellへ直接貼り付けできます。 うまくいかない場合はスペースが適切に入っているか確認してみてください。
3. 動画プレイヤーで再生する。
保存中のファイルを開くと再生されます。
ダウンロードしている映像がリアルタイムにプレイヤーに反映され(→表示される動画時間が常に増加する)、動画のシークも問題なく行うことができます。
・保存ファイル名を固定させている場合、映像をプレイヤーAで再生している状態でStreamlinkの処理を停止し、その状態でコマンドを入力、実行すると、自動的にプレイヤーAで再生が始まります。 (再生が始まらなかった場合、シークをしたりファイルを開き直したりすれば再生されます) →例えばOBSでプレイヤーを取り込む場合、プレイヤーの再キャプチャが不要となります。・並走ミラーではプレイヤーの多重起動が必要となります。 MPC-BEの場合、表示→オプションを選択して設定画面を開き、「プレーヤー」タブを選択、「開くオプション」の項目で[複数起動を禁止する]以外にチェックを入れてください。
雑記
Mixerのように超低遅延で配信ができる場合はOBSのレンダリング遅延で十分に対応できるのですが、2020年7月にサービスが終了(Facebook Gamingに移行するが技術はTeamsに生かすよう。)してしまうので… 他の配信サービスも十分低遅延になってきていますが、配信環境/視聴環境によって遅延の幅は非常に大きくなるのが現実で、レンダリング遅延では対応しきれないこともあります。レンダリング遅延は映像をメモリに一時保管するみたいで、あまり大きくすると不安定になることから調整幅が500msとなっている、と何処かで見た記憶があります。
SHOWROOMがLow Latency HLS等の技術を駆使して遅延0.5秒を実現しており、また5G技術でも遅延を減らせるそうなので、今後の配信プラットフォームの進展に期待…?