Quantcast
Channel: mattintosh note
Viewing all articles
Browse latest Browse all 892

Raspberry Pi で GStreamer を使って艦これをフルHDで楽しむ

$
0
0

GStreamer で画面の一部を切り取って拡大したものを他の領域に表示させる方法色々。

ここ最近、GStreamer を弄ってて、RTMP配信はできるようになったけど、画面全体は必要ないよなぁ、と。調べてみたら ximagesrcにはクロッピングオプションがあるようなのでこれを使って Flashの部分だけを切り取ってみる。

Raspberry Pi 3 で動かしている艦これは VNCサーバ上で起動しているのでディスプレイ番号は :1にしている。艦これの表示領域は 800x480 なのでこれをちょいちょい動かして最適な場所を startxstartyで指定する。endxendyはそれぞれの数値に Flashの表示領域分を足したものを指定する。

Raspberry Piではフレームバッファバイスが使えるので fbdevsinkを使えば X が起動していなくても画面に表示させることができる。sync=trueだと遅くなるのでここは sync=falseにしておく。多少のコマ落ちは仕方ない。

x=233y=24w=$((x + 800-1))h=$((y + 480-1))
gst-launch-1.0 -e\
    ximagesrc display-name=:1 show-pointer=falsestartx=${x}starty=${y}endx=${w}endy=${h}\
    ! videoconvert ! videoscale ! video/x-raw, framerate=25/1, width=1920, height=1080, pixel-aspect-ratio=1/1, method=lanczos \
    ! fbdevsink sync=false

そうするとこうなる。記事先頭の写真のような状態になる。

さすがに直接文字を表示しているわけではないので Android版ほど綺麗ではないけど、23 inch くらいのディスプレイなら少し離れればそれほど気にならない。

画像は pngencで取得したもの。

で、操作はどうしてるかっていうと普通の PC から VNCで弄ってるんだな…。ブラウザの拡大機能使えばいいやん…ってなるんだけど。

とりあえず Raspberry Pi単体でクロップと H.264への変換、ALSAのプレイバックオーディオを録音することはできたのであとは用途か。

ximagesinkxvimagesinkは他のマシンのディスプレイも使えるようなので ximagesrcも恐らく他のマシンのディスプレイに接続できるはず。ということはノート PC でゲームをプレイしつつ、エンコードとストリーミング配信は Raspberry Piにやらせることもできそうだ。音声は PulseAudio で拾ってくればなんとかなるだろう。

うーん、Raspberry Piをプロジェクタに接続して Wi-Fiでデータ送ってワイヤレスプロジェクタでも作るか…?


ネットを徘徊していたらゲームのミニマップをサブディスプレイに拡大表示している例があった。なるほど、そういう使い道もあるのか!


Viewing all articles
Browse latest Browse all 892

Trending Articles