Raspberry pi上のOSMCにstreamlinkをインストールする

streamlink」をOSMC環境に入れてみた

streamlinkからVLCを起動してHDMI経由の音声出力はできたのですが、HDMI映像出力がうまくいきませんでした。このため、VLCで受信したものをrtspサーバとして出力し、そのデータをkodi側で受け取るという実装にしました。

追加したもの

再生用にVLC

$ sudo apt install vlc vlc-plugin-sdl 

pythonでpipコマンドを使うために

$ sudo apt install python-pip python-setuptools

コンパイルをするために

$ sudo apt install build-essential python-dev

エラー解決のために

下記のエラー解決のために「sudo apt install libffi-dev」

    c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
     #include <ffi.h>

「sudo apt install libssl-dev」

    build/temp.linux-armv7l-2.7/_openssl.c:498:30: fatal error: openssl/opensslv.h: No such file or directory
     #include <openssl/opensslv.h>

で・・・これでようやくstreamlinkインストールに成功しました。

「sudo pip install streamlink」

再生に至るまで

以下のような感じで、OSMCにログインした状態でコマンドを実行して、ポート8554にてrtspのストリーミングサーバを実行します。

$ streamlink https://www.showroom-live.com/ringo-005 best --player="cvlc --sout '#rtp{sdp=rtsp://:8554/}'"

ちなみに、streamlinkのマニュアルを見ると「–player-args」というオプションで引数を渡すことができるとありましたが、「streamlink https://www.showroom-live.com/ringo-005 best –player=cvlc –player-args=”–sout ‘#rtp{sdp=rtsp://:8554/}'”」を実行すると、以下のエラーになってしまって起動できませんでした。

osmc@osmc:~$ streamlink https://www.showroom-live.com/yui-010 worst --player=cvlc --player-args="--sout '#rtp{sdp=rtsp://:8554/}'"
/usr/local/lib/python2.7/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.2) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
[cli][info] Found matching plugin showroom for URL https://www.showroom-live.com/yui-010
[cli][info] Available streams: 144p (worst), low, high, 1080p (best)
[cli][info] Opening stream: 144p (hls)
[cli][info] Starting player: cvlc
[cli][info] Closing currently open stream...
Traceback (most recent call last):
  File "/usr/local/bin/streamlink", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/main.py", line 1033, in main
    handle_url()
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/main.py", line 594, in handle_url
    handle_stream(plugin, streams, stream_name)
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/main.py", line 447, in handle_stream
    success = output_stream(plugin, stream)
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/main.py", line 320, in output_stream
    output.open()
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/output.py", line 24, in open
    self._open()
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/output.py", line 221, in _open
    self._open_subprocess()
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/output.py", line 242, in _open_subprocess
    args = self._create_arguments()
  File "/usr/local/lib/python2.7/dist-packages/streamlink_cli/output.py", line 203, in _create_arguments
    args = self.args.format(filename=filename)
KeyError: 'sdp=rtsp'
osmc@osmc:~$ streamlink https://www.showroom-live.com/yui-010 best --player="cvlc --sout '#rtp{sdp=rtsp://:8554/}'"
/usr/local/lib/python2.7/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.2) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
[cli][info] Found matching plugin showroom for URL https://www.showroom-live.com/yui-010
[cli][info] Available streams: 144p (worst), low, high, 1080p (best)
[cli][info] Opening stream: 1080p (hls)
^CInterrupted! Exiting...
[cli][info] Closing currently open stream...
osmc@osmc:~$

続いて、拡張子が.m3uで、以下の内容をテキストエディタで作成します。

#EXTM3U
#EXTINF:-1 
rtsp://127.0.0.1:8554

このm3uファイルをkodiで開くとshowroom動画が再生されました。

Beijing LINXというLinuxを入れてみた

NetBackupのOSコンパチガイドに登場した 「Beijing Linx Software Corp Linx」 が気になったので、仮想環境上にインストールしてみた。

調べて見ると「北京凝思科技有限公司(LINX-TECH)」という会社で作っているようで「服务与支持 > 软件下载 > 操作系统」で凝思安全操作系统V6.0.42、凝思安全操作系统V6.0.60、凝思安全操作系统V6.0.80のISOがダウンロードできるようだ。

とりあえず「V6.0.80」のISOファイル Linx-6.0.80-20180821-amd64-DVD.iso をダウンロードして、vSphere環境に突っ込んだ。

とりあえず、最初にLINXの初期インストール状況を軽く書いておくと

・ISOイメージのラベル名は「Debian 6.0.80-20180821 amd64 1」
・Linux kernel 4.9.0-0.bpo.1-linx-security-amd64 4.9.2-2~bpo8+1linx4 (2018-08-17)
・/etc/apt/sources.list にはオンラインリソースの登録は何もない
・Debian 8 Jessieベース(Debianとしてのサポートが終了)

日本時間にあわせる操作はできたものの、日本語キーボードやロケールをCやJP系に変えることは関連するパッケージがインストールされていないため出来なかった。

# timedatectl set-timezone Asia/Tokyo


ここからインストールプロセスの画像です

なかなか力強い感じのブートロゴ

この後細かいあたりは飛ばしますが、こんな感じのプロセスが進みます。

そしてインストール終了

ログイン画面はこんな感じです。

富士通のWindows MRデバイスを買った

Ryzen3 2200G環境なら動くかなぁ、と2万7千円の富士通Windows MRデバイスを買ってみた。

使ってみた感想

・メガネ非対応

メガネ用アダプタがないので、コンタクトもしくは中に収まるような小型メガネ(JINS Short Temple Airframe)を使う必要がある。

・頭に固定する為のベルトがギリギリの長さ

もうちょっと長さが欲しかった

・だいたい一通りは遊べる

VRchatとかBeat Saberとか有名どころは一通りできるので、入門編としていいのでは?

・ディスクの早さがある程度重要

ディスクアクセスが遅いSATAドライブだと、アプリの起動に時間がかかった。

起動した後は特に問題はありませんでした。

・Ryzen3 2200Gでもとりあえず遊べる

たぶん、もっといいGPUがあったほうがいいはず。

Ryzen3 2200G環境でStoreMIを導入した

Ryzen3 2200G環境にして使っているわけですが、交換する以前から続いているWindows起動直後から10分ぐらい継続するGoogle Syncのファイル更新チェックによるCドライブのディスクI/O 100%消費がなんとかならないかと気になり始めた。

Cドライブ全部をSSDにすれば解決ではあるものの、現状のCドライブは2TBとこれをまるごとSSDにかえるにはハードルが高い(コスト的に

で・・・今回使ったマザーボードのチップセットAMD B450では「StoreMI」というストレージキャッシュテクノロジーが使える。参考記事:無料のAMDストレージ高速化技術「StoreMI」でHDD/SSDが速くなるか検証

そして、いまはSSDが安くなっている時期なので、Intel SSD 760pのNVMeモデル256GBを購入し、導入してみた。

複数の物理ディスクを繋いだ状態でセットアップしたところ、初回再起動時にブートデバイスを誤認してしまったので、セットアップ時はブートディスクとNVMeディスクのみを繋いで行った方が良さそうです。

初期再起動後、設定処理が30分ぐらい裏で走り、完了したあとで、再起動してみたところ、Google Syncによるディスク負荷100%は無くなりました。

しかし、その代わりに、常にCPUが20%程度持って行かれるという事態に・・・

この状態でWindows MRデバイス被ってSteam VRのBeat Saberをやってみたところ、レスポンスが従来に比べて悪くなっていることを確認。

どうやら、CPU性能があからさまに足らなくなった模様。

StoreMIを使う場合は、ある程度CPUが余っていないとあまり意味がなさそうですね。

最小インストールのRHEL7環境で文字化けせずにNetBackup管理画面を表示するために必要なパッケージ

最小インストールのRHEL7環境で文字化けせずにNetBackup管理画面を表示するために必要なパッケージを確認した。

なお、表示させるのはLinuxサーバローカルのディスプレイではなく、同一ネットワーク上にあるWindows10にインストールされた「VcXSrv

# yum install libXext libXrender libXtst xorg-x11-fonts-Type1 vlgothic-fonts vlgothic-p-fonts

なお、「vlgothic-p-fonts」は入れなくても表示はされるが、文字がゴツゴツした感じとなる。

・vlgothic-fonts vlgothic-p-fontsの両方をインストールした場合


vlgothic-fonts vlgothic-p-fontsの両方をインストールした場合

・vlgothic-fontsのみインストールした場合


vlgothic-fontsのみインストールした場合

NetBackup GUIはJavaを使って表示している。

フォントに関する指定はJREのlibにfontconfig~.srcというファイルで保存されている。

# ls /usr/openv/java/jre/lib/fontconfig*.src
/usr/openv/java/jre/lib/fontconfig.RedHat.5.properties.src
/usr/openv/java/jre/lib/fontconfig.RedHat.6.properties.src
/usr/openv/java/jre/lib/fontconfig.SuSE.10.properties.src
/usr/openv/java/jre/lib/fontconfig.SuSE.11.properties.src
/usr/openv/java/jre/lib/fontconfig.Turbo.properties.src
/usr/openv/java/jre/lib/fontconfig.properties.src
#

「fontconfig.RedHat.6.properties.src」の中を見てみると、関係しそうな記述として以下を発見

# Font File Names
filename.-misc-kochi_gothic-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf
filename.-misc-kochi_mincho-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/ipa-mincho/ipam.ttf
filename.-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/cjkuni-uming/uming.ttc


# AWT X11 font paths
awtfontpath.chinese-tw-iso10646=/usr/share/fonts/cjkuni-uming
awtfontpath.chinese-cn-iso10646=/usr/share/fonts/cjkuni-uming
awtfontpath.japanese-iso10646=/usr/share/fonts/vlgothic
awtfontpath.korean-iso10646=/usr/share/fonts/un-core

どうやら明朝体は「ipa-mincho-fonts.noarch 」 に含まれる /usr/share/fonts/ipa-mincho/ipam.ttf、ゴシック体は「vlgothic-fonts」 に含まれる /usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf を使っているようだ。


2022/07/10追記

最小インストールのOracle Linux 8でブラウザを動かす場合FirefoxとChromeのどっちが容量少ないか」 で検証した結果を踏まえると、RHEL8の標準状態で使えるフォントは「google-noto-cjk-fonts-common google-noto-sans-cjk-ttc-fonts google-noto-serif-cjk-ttc-fonts」になるんじゃないかと思われる。

もしくはEPELレポジトリを追加して、「vlgothic-fonts vlgothic-p-fonts」