Windows向け省帯域リモートデスクトップシステム (クライアントはAndroid) の開発中お試し版を配布してみます
何?
- 出先で、モバイルデバイス(主にはスマートフォン)を使ってモバイルネットワーク経由で自宅PCにインストールしてある音声付きノベルゲームをやれたらいいな、と思った
- Windows公式リモートデスクトップとかだとパケ死するので、ダメ
- 利用したいアプリケーションの特性(画面の大部分は頻繁には更新されない)を考慮すると、FPSを落とすとか、全画面表示にしておけば画質を落としても何とかなるのでは?と考えた
- 画像・音声の両方に対応していて、画質やFPSを極端に落とせるソフトウェアは見つからなかった
- ので自分で作ることにした
- まとめると、すげえ馬鹿みたいに画質やFPSを落とせて、結果的に省帯域で使えるリモートデスクトップシステム(サーバ、クライアントとなるAndroidアプリ)です!
作り
頑張った・苦労したところ
- 画像 (動画) と 音声の エンドレスなライブエンコーディング・デコーディングを実装した
- クライアント側は大部分をXamarin.Forms (プラットフォーム非依存でUI含めて実装できる) で書いた
- タッチパネルでのマウス操作をまともに使えるレベルの仕様(実装とは言っていない)で作った
未実装の機能などなど(これから実装しないといけないところ)
配布ファイル
- サーバ(zipで固めてあるので好きなところに展開して下さい)
- クライアント(Androidアプリ)
- 圧縮時で約37MB。展開すると約73MB (もっと小さくできますが、その手の最適化?を行っていないので大きいです・・・)
- RemoteDesktop.Client.Android.zip - Google ドライブ
クライアントのapkパッケージも、拡張子がapkだとスマホブラウザでダウンロードした時に開くアプリとかで面倒なことになったりするみたいなので、zipで固めてあります。
展開して中のapkパッケージをインストールしてください。
なお、Google Play経由でのインストールではないので、以下のページで説明されているような手順でのインストールが必要になります。
https://qiita.com/gumby/items/9e1431b73bdb6b0684d8
上記で配布しているバージョン1.1に対応するコードは以下です。
GitHub - ryogrid/RemoteDesktopOneWindowForNovelGrame at d18f7ede53d73216bf5041959501a63ba741eb29
Copyrightとライセンス
動作環境
サーバ
- Windows10 64bitでのみ動作確認していますが、Windows7以降 (64bit) ぐらいなら動作するのではないかと思います
- .Net Framework v4.6.1をターゲットにビルドしてあるため、そのバージョンと互換性のある環境であれば動作可能なはず
- ポートは10010番と10011番を利用します
クライアント(Androidアプリ)
注意
- サーバとクライアントの間の通信は暗号化されません
- クライアントアプリはバックグラウンドにいったときの処理が未実装のため、終了させずに他のアプリに切り替えると、異常動作をするのではないかと思います!!!
- 省帯域というのを示したいので、画質はかなり落としてあります。正直、今のパラメータだと実用に耐えないと思います
お願い
- うまく動作しなかった場合は、コメント欄にOSのバージョンとデバイスの機種名(クライアント側の場合のみ)、また可能ならどのような現象が発生したかをご報告いただけると大変ありがたいです
使い方
サーバ
zipファイルを展開して、RemoteDesktop.Server.XamaOK.exe をファイルエクスプローラなりコマンドプロンプトなりで起動すれば使えます。
コマンドプロンプトが追加で開きますが、そこにはサーバの標準出力が出ています。
終了するときは、上記のコマンドプロンプトを閉じるか、タスクマネージャなりでプロセスを終了させればOKです。
動作させるPCの設定を変更したり、ファイルを生成したりすることはありません。
従って、アンインストールはフォルダを削除すればOKです。
機能・処理
- PCのメインスクリーンの内容をキャプチャしてクライアントに配信する(1秒おき)
- PC内で流れている?サウンドをクライアントに配信する
- クライアントからのマウス操作を、マウスカーソルに適用する
クライアント(Androidアプリ)
- 起動したらIPアドレス入力フォームがあるので、それにタッチしてフォーカスをあててサーバのIPアドレスを入力
- 左上の「三」みたいなのを押して、RDPSessionを選択 => サーバへ接続が開始され、画像と音声が送られてきます
- リモート操作は現状、マウスのみ対応です。PC画面はスマホを横にした状態で見える形で表示されます。タッチしたまま指を移動させるとカーソルが連動して動きます。タップすると左クリック。ロングタップで右クリックです。ダブルクリックはタップ2回ですが、あまり速いとうまく認識されないので、ゆっくりめを意識してやってみてください
- 終了のさせかた。終了ボタンとかはないので、Androidの□ボタンとかで起動中のアプリを出してシュッとするとかで終了させて下さい