2015/10/06

RaspberryPiのモニタ出力をVNC経由で表示

前記事で、RaspberryPi2(ModelB)にRasbianをセットアップして、普通にRasbianデスクトップ(LXDE)をVNCで表示するところまでやりましたが、モニタ接続しないで描画デモを見るには?と調べてたら dispmanx_vnc に行き着きましたので、書いておきます。

何分RaspberryPiデビューが遅かったもんで、今こんなことをやっています。

目的は
・モニタレスで DEMO PROGRAMS にあるような描画デモを一通り動かしてみたい。
・遠隔地からVNC経由でRaspberriPiのディスプレイ出力を得たい。

最終的にはこんなイメージになります。
(スナップショットを載せないポリシーなのだけど、こればっかりは無いと辛いんで)


ということをできるようにするまでの流れ

dispmanx_vncをビルドするのに必要なライブラリのインストール
$ sudo apt-get install libvncserver-dev

dispmanx_vncをクローンしてビルド
$ git clone https://github.com/hanzelpeter/dispmanx_vnc.git
$ cd dispmanx_vnc
$ sh ./makeit

起動
$ sudo ./dispman_vncserver -r

すると、5900ポートでVNCサーバーが1つ立ちます。
後はどこからでもVNCでRaspberryPiのコンソール画面が転送されてきます。

本題はここまで

自分はRaspberryPi(Raspbian)自体のデスクトップに表示してみたかったので、RasberianにVncViewerインストールして、VNC内でVNCしてみました。

VncViewerインストール(vnc4viewerでもいいと思う)
$ sudo apt-get install tightvncviewer

自分の5900ポートをvncする。RaspberriPiのコンソールディスプレイそのものが現れる。
$ xtightvncviewer localhost:5900

デモをビルド
$ cd /opt/vc/src/hello_pi
$ ./rebuild.sh

どこかの端末からデモを1つ実行してみる。
$ cd hello_triangle
$ ./hello_triangle.bin


するとイメージのような状態になりました。15fps程度でキューブがくるくる回ります。

dispmanxって何だ?って調べてたら Raspberry Pi VideoCore APIs に概要説明がありました。
自分の理解としては、raspbianにプリインストールされている/opt/vc 自体がそれってこと。
dispmanxもvcの一部で、OpenGLESデモもビデオデバイス制御にvcライブラリを使っている。

dispmanx経由でディスプレイに描画されたイメージを直接キャプチャしてVNCストリームするツールがdispmanx_vncってことだね。

RaspberryPi用のXBMCやQtもこのVCライブラリを使っているらしいので、それらもVNC転送可能だということですね。

0 件のコメント:

コメントを投稿