xvfb-runで--listen-tcpを試してください。

xvfb-runで--listen-tcpを試してください。

このガイドラインに従おうとしています。http://afterdesign.net/2016/02/07/recording-headless-selenium-tests-to-mp4.htmlセレンテストを記録します。

ただし、そのポートを使用してxvfbに接続しようとすると、次の結果が表示されます。

[x11grab @ 0x1e3b460] ディスプレイ127.0.0.1:44を開くことができません。エラー 1. 127.0.0.1:44: 入力/出力エラー

私は問題を次のように単純化しました。 1つのウィンドウで:

xvfb-run --listen-tcp --server-num=44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" gedit

別のウィンドウで:

ffmpeg -f x11grab -video_size 1920x1080 -i 127.0.0.1:44 -codec:v libx264 -r 12 ~/test.mp4

得る

[x11grab @ 0x1e74460] Cannot open display 127.0.0.1:44, error 1.
127.0.0.1:44: Input/output error

これは、xvfbが実行されていないときに得られるのと同じ応答です。

ここでこの問題のように聞こえることがわかりました。https://bugzilla.redhat.com/show_bug.cgi?id=1340432しかし、この問題はバージョン1で解決されたと言われています。私はすでにバージョン1.17と2:1.18.4-0ubuntu0.2を使用しています。

どんなアイデアがありますか?

===更新===

Rauscherの答えに従って質問をまとめると、次のようになります。

端末でこれを行うとき:

$ Xvfb :44 -listen tcp -ac -screen 0 1920x1080x24

他の端末でこれを行います。

$ xdpyinfo -display localhost:44 | head -n10
name of display:    localhost:44
version number:    11.0
vendor string:    The X.Org Foundation
vendor release number:    11804000
X.Org version: 1.18.4
maximum request size:  16777212 bytes
motion buffer size:  256
bitmap unit, bit order, padding:    32, LSBFirst, 32
image byte order:    LSBFirst
number of supported pixmap formats:    6

一方、端末でこれを行うときは、次のようになります。

$ xvfb-run --listen-tcp --server-num=44 -s "-ac -screen 0 1920x1080x24" google-chrome --user-data-dir=/tmp

(またはセレンテストなどの他のアプリケーション)

他の端末でこれを見ることができます。

$ xdpyinfo -display localhost:44
xdpyinfo:  unable to open display "localhost:44".

解決策がありますが、まだtcpを介してxvfb-runに接続できません。

ベストアンサー1

私はxvfb-runよりもXvfbの経験があります。 Xvfbを直接実行してみることができます。

Xvfb :44 -auth /tmp/xvfb.auth -ac -screen 0 1920x1080x24

(Xvfbはデフォルトでtcpを受け取ります。以下を-nolisten tcp使用して無効にできます。

そうしないと、IP 127.0.0.1の使用に問題がある可能性があり、他のIPを使用する可能性があります。私はこれについての経験はありませんが、うまくいきます/etc/hosts。また、で提供されているすべてのIPがifconfig機能する必要があります。

おすすめ記事