web-dev-qa-db-ja.com

ネットワーク経由で画面Xorgを複製する(Xpra?)

ネットワーク上でデスクトップを複製する方法を探しています。 (Webブラウザクライアントで機能するものは素晴らしいでしょう。)

  • vnc/x11vncを使おうとしましたが、品質/フレームレートが低すぎます。 (スマートフォンクライアントのCPUが高すぎる-私は思います。)

  • ffmpegを使用して画面をストリーミングビデオに変換しようとしましたが、実行できませんでした。 (品質が悪く、実際のストリーミングシステムではありません)

それを行う方法はありますか?多分X11転送と重複画面を使用することによって?

ssh -Xxrandr -d :0 --output HDMI-1 --autoの組み合わせかもしれませんか? (このxrandrコードはHDMI-1の重複画面です)

のように:xrandr -d :0 --output http://192.168.1.3:9001 --auto(私は夢を見ています。)

編集:たぶんxpraは私が探していることをすることができますか?しかし、今のところそれを機能させることはできません。

5
bob dylan

そのために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負荷が大幅に減少する可能性があります。

3
rudib

Chromeリモートデスクトップはおそらくあなたが探しているものです:

https://chrome.google.com/webstore/detail/chrome-remote-desktop/gbchcmhmhahfdphkhkmpfmihenigjmpp?hl=en

2
V13