Piping xpra para ffmpeg

2

Estou tentando gravar uma exibição xpra sem cabeça. (Eu tentei as opções xvfb e Xdummy).

O problema é com o "x11grab" do ffmpeg. O comando usado é:

/usr/bin/ffmpeg -y -framerate 2 -video_size 1920x1080 -f x11grab -i :102 -vcodec libx264 -crf 0 -preset ultrafast /output.mkv

O problema é que isso apenas registra uma exibição em branco. É branco completo, exceto pelo X preto que você reconheceria em um sistema Linux.

O ffmpeg funciona bem para gravar exibições "reais", e eu posso anexar à sessão xpra e ver que existem janelas de fato na tela. Além disso, canalizar uma saída xwd para o xwud mostra as mesmas janelas.

Eu perdi o dia todo com isso! Alguém sabe alguma coisa que eu possa fazer para fazer o x11grab funcionar?

    
por user2426679 25.06.2014 / 01:39

2 respostas

1

Então, depois de fazer algumas pesquisas pesadas, eu decidi que isso tem algo a ver com a maneira como o xpra gerencia suas janelas ativas.

Pipar xwd para o xwud requer que eu especifique o ID da janela filho para xwd, caso contrário, ele exibe apenas um quadro de janela em branco. Visualmente, isso é muito diferente da moldura branca em branco que recebo do ffmpeg, mas acho que é indicativo da mesma coisa.

Se eu tivesse que adivinhar, tem algo a ver com os aviões, como evidenciado por

 444  req->planeMask = (unsigned int)AllPlanes;
 445  req->format = ZPixmap;

^ o código ffmpeg para x11grab, do link

Eu decidi descartar o xpra e usar o xvfb standalone. Isso me permite usar o ffmpeg

    
por 25.06.2014 / 17:02
1

Xpra é um gerenciador de janelas de composição , eu cito: O gerenciador de janelas compõe os buffers da janela em uma imagem representando a tela e grava o resultado na memória de exibição. . No caso xpra, a memória de exibição está no cliente e, até você anexar seu cliente, ele não existe e, portanto, não há nada exibido no vfb. É assim que o xpra funciona.

Se você quiser usar xpra e ainda canalizar o vfb para ffmpeg usando x11grab, você pode iniciar seu vfb separadamente e, em seguida, usar xpra shadow para acessar o vfb existente via xpra. (O xpra shadow mode é muito menos eficiente ... porque ele não usa composição, ele usa screencraping como o x11grab)

A partir da versão 0.16, há uma nova opção chamada sync-xvfb (em milissegundos) que também pode ser usada para pintar a tela virtual, que você pode capturar.

    
por 04.09.2014 / 15:54