ネットワーク上でデスクトップを複製する方法を探しています。 (Webブラウザクライアントで機能するものは素晴らしいでしょう。)
vnc
/x11vnc
を使おうとしましたが、品質/フレームレートが低すぎます。 (スマートフォンクライアントのCPUが高すぎる-私は思います。)
ffmpeg
を使用して画面をストリーミングビデオに変換しようとしましたが、実行できませんでした。 (品質が悪く、実際のストリーミングシステムではありません)
それを行う方法はありますか?多分X11転送と重複画面を使用することによって?
ssh -X
とxrandr -d :0 --output HDMI-1 --auto
の組み合わせかもしれませんか? (このxrandr
コードはHDMI-1
の重複画面です)
のように:xrandr -d :0 --output http://192.168.1.3:9001 --auto
(私は夢を見ています。)
編集:たぶんxpra
は私が探していることをすることができますか?しかし、今のところそれを機能させることはできません。
そのためにffmpeg
を使用できます。
送信デバイスで、次のコマンドを実行します。
ffmpeg -f x11grab -s 1800x1000 -framerate 30 -i :0.0 -preset fast -vcodec libx264 -tune zerolatency -b 900k -f mpegts udp://RECEIVERIP:9000
そして、receiveingデバイスで、ファイアウォールポート9000/UDP
を開いて実行します。
ffplay udp://@:9000
それに応じてRECEIVERIP
を設定し、-s 1800x1000
を変更して送信する画面の領域を調整する必要があります。もちろん、9000
の代わりに、任意の空きポートを選択できます。
パフォーマンスに関しては、必要な品質と遅延を維持しながら、送信マシンが処理できる範囲で-framerate
と-preset
(...|fast|ultrafast
)を調整できます。
ffplay
は、ニーズに合う可能性のある最小限のクライアントです。 vlc
を使用することもできます。
ブラウザにストリームを表示するには、おそらくストリーミングサーバーを追加で使用する必要があります。 vlc
にはその機能がありますが、遅くなる可能性があり、そのための十分なドキュメントはまだ見つかりませんでした。
注:
最適化された送信コマンド(待ち時間は短くなりますが、品質は低く、特に動的コンテンツではありません)は次のようになります。
ffmpeg -f x11grab -s 1800x1000 -framerate 15 -i :0.0 -preset ultrafast -vcodec libx264 -tune zerolatency -b 500k -f mpegts udp://RECEIVERIP:9000
負荷をさらに最適化するために、 documented のようにハードウェアアクセラレーションを活用できます。これはプラットフォームに依存しますが、サポートされている場合はCPU負荷が大幅に減少する可能性があります。
Chromeリモートデスクトップはおそらくあなたが探しているものです: