2配信チャンネル同時に。見逃さない、fujirock2018 automaton。timeshift 、ondemand で鑑賞するシンプルハック[改稿]

フジロック2018(fujirock2018)などストリーミング、ライブ配信を安定画質、タイムシフトで鑑賞する。パーフェクトらくらく技法

いうなれば、ライブ配信に関わるオートマトンを稼働させるということ。オンデマンドっぽくというか。ubuntuでうまくないので、manjaro での稼働にしました。

らくらくなのは結果であって試行錯誤は涙付きかもしれません。技術レベルは初心者より少しぐらい慣れたPC中級者でしょうか。
まったくの初心者でもじっくり読んで数行のコマンドを発行すれば使えるようには配慮したつもりであります。

ubuntuではうまくいかない場合があったため、テストを繰り返したmanjaroに戻しました。結果、非常にうまく動作しています。満足です。

エキスパート向け要約::本質はたったの1行です。オートマトンっぽくするためには2行です。

   $ at -t 201807281250
   timeout 4000 mpv  https://youtu.be/Rjrgz-lfcdQ -o 'The Birthday.mkv'
熟練ユーザーにはこの2行だけでご理解いただけるかと思いますので、ここまで読めばだいじょうぶです。
さて、本論です。

Linuxに含まれるコマンド、アプリでいろいろ試してみた結果::次の観点から選びました

  • 回線が不安定な環境でも可能な限り高画質でライブ一時保存しつつ鑑賞する。中断や停止がほとんど起きない。
  • タイムシフトで鑑賞できる。但し、生成ファイルは巨大になっていくので、ストレージに余裕がないとつらい。不要になったらどんどん削除していくほうがいい。
  • フジロックライブ配信タイムスケージュルを勘案して、時刻指定自動起動、自動終了させる。放置しておくとストレージ圧迫です。ジョブを停止するのを忘れないでください。

技術的おおざっぱ(結果だけ得たい場合は知らなくてもいいこと)

  • 結果的に mpvとyoutube_dl の機能を組み合わせている。当然だがプレイヤーはデコードしながら動いている。これはWMPでも同じである。ブラウザ内動画再生エンジンでも同じである。それをインターセプトしている。 
  • 都合、 atコマンドで自動化。リアルタイムでH.264/MKVにして自動的にキャッシュ保存する。
  • ちょっと期待していたWindowsW10のゲームモードではうまくいかない(マイクロソフトが悪いわけではありません。そういう用途です)。このLinuxオートマトンなら稼働中に何をしてもだいじょうぶ。タイムシフトでキャッシュファイルで観ることができる。
  • チャンネルを切り替えたりしてもOK。他のアプリも起動できる。ブラウザでニュース読んだりしてもだいじょうぶ。
  • 2ライブチャンネル同時でもだいじょうぶ。速いマシンが必要です。
この一連の流れは「オートマトン」録画マシン構築に見える人もいるかもしれませんが、キャッシュを明示的に指定して生成していける動画再生エンジンであるmpvの機能の応用です。不安定な回線でライブ配信に限らずyoutubeコンテンツを綺麗に、遅延や中断なく視聴する冴えた方法かと思います。

所要コマンド:: ubuntu でうまくないので、manjaroに戻しました(だいじなことなので繰り返します)

このライブ配信タイムシフト視聴技法が使える可能性のある人

  • UNIX系の仲間。Linux,MAC OS X,及び最近ではWindows10にWSLを導入している人。
  • (必要コマンドがインストールできる人なら、事実上世界の誰でもいける)
※LinuxでManjaro と ubuntu で実証実験を行ってみました。他の環境では深入りして試していません。WindowsNative に移植されたWinバイナリではうまく動作しませんでしたのでさくっと中断。WSLなら可能性はあると思います。ubuntuでうまくないので、ManjaroLinuxに戻しました。

実際に仕込んだコマンド例::Linuxではこうする。

以下はもちろん未来のことなので、何が起きるかわかりません。テストした範囲では、とてもうまく動作しました。タイムスケジュール は後ろめにずれがちみたいです。
たとえば、今日土曜日、The Birthday が12:50からライブ配信予定です。 Linuxのターミナルで、

土曜日の見本

   $ at -t 201807281250
   ついで、次の1行を貼り付けます。

   timeout 4000 mpv  https://youtu.be/Rjrgz-lfcdQ -o 'The Birthday.mkv'
そして、CTRL+D とします。最後のファイル名は必ず変えてください。上書きされますからね。
以上で、12:50から4000秒ライブ配信をキャッシュします。タイムシフトでみることができると思います。観る際は、VLC、TOTEMなどが良いかもしれません。 以下でも構いませんが、当方環境では多少不具合がでます。
$  mpv ./tmp/cache.mkv
$  vlc ./tmp/cache.mkv
でもいいし、たいていのひとはマウスクリックでしょうね。

確認します。atコマンドに登録されているjobをリスト表示します。

$ atq
1 Sat Jul 28 12:50:00 2018 a your_name

これでもむつかしいとお嘆きの貴兄に

$ mpv  https://youtu.be/Rjrgz-lfcdQ -o 'The Birthday.mkv'

$ mpv  https://youtu.be/Rjrgz-lfcdQ -o ./tmp/cache.mkv

とPCの前で時間になったら手動で起動してください。そして、1時間ぐらいしたらCTRL+C で終了します。これなら誰でもできそうです。スマホでアラームを 設定しておくなり、人間が頑張るのです。1行だけですけどね。苦にならない人はこれでもだいじょうぶですが、PCは自動化して使うものかと存じます。
保存ファイルは場所を指定できますが、/tmpなどストレージ残り容量には注意です。
キャッシュされるライブ配信のサイズ、概算で1時間あたり2GiBです。

間違えて登録した場合

$ at -l    #登録ジョブリストを表示、番号がわかります。
$ at -d 2  #間違えて登録した、不要になったジョブを番号2で削除します。

あまり遅い環境では安定した動作は見込めない可能性があります。

  • 検証している暇はないですが、おおむねメモリーは8GBはあったほうがいい。当方の環境では1セッションあたり1GiBを超えてますから、もっとあったほうがいいかもしれません。16GiB搭載しているシステムです。
  • 保存するストレージ空きは、1時間2GB程度の生成と見積もると良いです。
なお、日曜日はこんなかんじの例です。

例::日曜日 Sunday 7/29 Channel 1

11:30 - King Gnu
at -t 201807291130
timeout 3600 mpv https://youtu.be/0hjO3bCxUgE -o 'King Gnu.mkv'
13:20 - Suchmos
at -t 201807291320
timeout 3600 mpv https://youtu.be/0hjO3bCxUgE -o Suchmos.mkv

トラブルシューティング

  • atでスケジュールしたら電源管理でPCが勝手に眠らないようにします。
  • Windows10+WSL でうまく行かない場合は、Linuxをインストールしてもいいかも。
  • MAC OS X でうまく行かない場合は、Linuxをインストールしてもいいかも。
当方の感覚では、カジュアルに3日間だけOS変えるってのもありです。
ubuntu18.04LTSが、今現在のオススメ。当方のmanjaroでは負荷が高いです。HW支援が効いてないのか、全般にCPUが全力で働いてしまってます。ubuntuではCPU負荷は低いままです。mpv.confで HWアクセルを有効にしています。
ふたつのLinuxのmpv設定ファイルはハードリンクなので全く同じです(あまりこういうことはしないと思いますが)。
バージョンはもちろん違います。gitも追ってみたのですがmanjaroでは負荷が高いままですから、今回は時間の都合 ubuntuで済ませます。mesa絡みかも。


キャッシュディレクトリでのファイル生成状況を監視するコマンド行 以下の($は不要)、端末に貼り付けてリターン。5秒毎にファイルが増えていればたぶん成功しているっぽいと思いましょう。
$ cd /tmp
$ while true; do ls -l *.mkv| perl -alnE'say "$F[4]  \t $F[8]" ' ; sleep 5s ; clear ; done

余談::「今々変数」を使う、またはシェルのコマンド展開

$ TODAY_IMAIMA=`date +%Y-%m%d_%H%M` #今々変数

$ echo $TODAY_IMA
2018-0728_0124

なので、

$ TODAY_IMAIMA=`date +%Y-%m%d_%H%M` #今々変数

と打っておいて、

$  mpv  https://youtu.be/Rjrgz-lfcdQ -o ./tmp/$TODAY_IMAIMA.mkv

とすると、その都度の「年月日時刻」.mkv になりますから、

$  mpv  https://youtu.be/Rjrgz-lfcdQ -o $(date +%Y-%m%d_%H%M).mkv

より安全を期するなら

$  mpv  https://youtu.be/Rjrgz-lfcdQ -o /tmp/アーティスト名_$(date +%Y-%m%d_%H%M).mkv

とするとファイル名の競合は1分以内に同じコマンドを発行しない限り起きません。問い合わせなしで上書きされますから、注意してくださいね。空白はクォートしてください。忘れないでください。同じキャッシュファイル名を指定するとまるっと消えますよ。
今回の場合でいけば、アーティスト名がわかっているので、既述のようにバンドなどの名前を指定しておけば大丈夫です。コンテナ名(この場合、拡張子)を付けるのは忘れないでください。とても大事です。


動作確認環境 ➡ manjaroに変更しました。


System: Host: manjaro Kernel: 4.14.57-1-MANJARO x86_64 bits: 64 gcc: 8.1.1

System:    Host: ubuntu Kernel: 4.17.10-041710-generic x86_64 bits: 64 gcc: 8.1.0
           Desktop: Cinnamon 3.8.7 (Gtk 3.22.30-1ubuntu1) Distro: Ubuntu 18.04.1 LTS
Machine:   Device: desktop Mobo: ASUSTeK model: ROG STRIX B350-F GAMING v: Rev X.0x serial: N/A
           UEFI: American Megatrends v: 4011 date: 04/19/2018
CPU:       8 core AMD Ryzen 7 1700 Eight-Core (-MT-MCP-) arch: Zen
Graphics:  Card: Advanced Micro Devices [AMD/ATI] Tobago PRO [Radeon R7 360 / R9 360 OEM] bus-ID: 08:00.0
           

2セッションのリソース状況(びしばし食ってます)


プロセスの状況(片方はテストです)



キャッシュのVideo情報の例

カンタンにいうと当方の設定で、いわゆる H.264、コンテナMKVです。 FHDです。 早い話がこの動画コーデックに対応していない環境は事実上ありません。 標準です。Androidでも、iPhoneでも、なんでもOK。
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L6.2
Format settings                          : CABAC / 4 Ref Frames
Codec ID                                 : V_MPEG4/ISO/AVC
Bit rate                                 : 5 305 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Stream size                              : 591 MiB (96%)

所要コマンド:: ubuntu でうまくないので、manjaroに戻しました。

※ubuntu系18.04LTSは、atコマンドが標準では導入されていません。 次のコマンドを発行してください。arch系Manjaroは標準で導入済みかと思います。もし不足していれば導入してください。manjaroも素に近いインストールで試してみたところ、atコマンドは追加導入ですね。pamac でatと検索、追加コミットしてください。そしてデーモン起動です。systemctl start atd

ubuntu系になぜか親切なメモ

#入ってなければ、at mpv youtube-dl をインストールします。導入済みなら何も起きませんので発行しても問題はありません。

$ sudo apt install at mpv youtube-dl


Namida Zone :: 神々は細部に宿る――涙とともに、夜な夜なパンをかじった。

Grub2をめぐるあれこれ。テーマ、背景、フォント。それが Cute Grub 計画

No Copyright Girl / ノーコピーライトガール Grubと戯れるという意味のない日常:: Cute Grub 計画 コンピューターの電源オン後、 OS オペレーティングシステムを起動するためのブートローダーが先ず動きだす――ほぼすべてのLinux...