tentando obter --listen-tcp em xvfb-run

2

Estou tentando seguir estas instruções link para gravação de testes de selênio.

No entanto, quando tento me conectar ao xvfb com a porta, fico:

[x11grab @ 0x1e3b460] Não é possível abrir a exibição 127.0.0.1:44, erro 1. 127.0.0.1:44: Erro de entrada / saída

Eu simplifiquei o problema para isso: em uma janela:

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

em outra janela:

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

obtém

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

que é a mesma resposta que recebo quando o xvfb não está em execução.

Eu encontrei algo que soa como esse problema aqui: link No entanto, diz que isso foi resolvido na versão 1, e eu já estou na versão 1.17 e estou no 2: 1.18.4-0ubuntu0.2.

Alguma idéia?

=== UPDATE ===

depois da resposta de Lauscher, resumi o problema:

Quando faço isso em um terminal:

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

Eu faço isso em outro terminal:

$ 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

por outro lado, quando faço isso em um terminal:

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

(ou qualquer outra aplicação, como testes de selênio)

Eu vejo isso em outro terminal:

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

Então, eu tenho um trabalho por aí, mas ainda não consigo me conectar ao xvfb-run sobre o tcp

    
por Alex028502 20.02.2017 / 20:40

3 respostas

2

Sou mais experiente com o Xvfb do que com o xvfb-run. Você pode tentar executar o Xvfb diretamente:

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

(Xvfb escuta no tcp por padrão, você pode desabilitá-lo com -nolisten tcp )

Caso contrário, o problema poderia estar usando ip 127.0.0.1, talvez funcione com um ip diferente. Eu não tenho experiência com isso, mas é possível configurar um alias ip para localhost em /etc/hosts . Além disso, qualquer ip dado por ifconfig deve funcionar.

    
por 21.02.2017 / 00:51
0

Isso funcionou para mim:

xvfb-run -s ":99 -auth /tmp/xvfb.auth -ac -screen 0 1920x1080x24" ./run.sh & # launching xvfb in the background \
sleep 3 && # waiting for xvfb to be ready \
ffmpeg -y -f x11grab -video_size 1920x1080 -i :99 -codec:v libx264 -r 30 /tmp/test.mp4

Então, a coisa toda é passar o server-num diretamente para Xvfb via -s argumento em vez de usar --server-num . Eu não tentei com --listen-tcp embora.

N.B: Não esqueça de matar Xvfb depois que ffmpeg terminar (com killall Xvfb ).

    
por 15.11.2017 / 17:23
0

O argumento chave, que faz toda a diferença, é -ac para Xvfb, que significa " desativa os mecanismos de controle de acesso baseados em host "

O --listen-tcp também será necessário se você planeja acessar o servidor X a partir de outra máquina.

Assim, o exemplo completo com xvfb-run será:

xvfb-run --listen-tcp -s "-ac" -- your_command
    
por 11.01.2018 / 13:41

Tags