Estou lendo este artigo . Existe uma declaração que diz:
ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -s $(xwininfo -root | grep 'geometry' | awk '{print $2;}') -r 25 -i :0.0 -sameq -f mpeg -ar 48000 -s wvga -y sample.mp4
Quando executo o comando, recebo um erro na seção que diz:
xwininfo -root | grep 'geometry' | awk '{print $2;}'
O motivo é que, quando você usa esse comando no meu computador, ele gera:
1360x768+0+0
Como removo a última parte da saída da resolução da tela em 1360x768
vez de 1360x768+0+0
?
command-line
awk
Guest123ABC
fonte
fonte
Respostas:
Você pode usar
perl
para obter apenas a resolução:Ou ainda mais curto com apenas o GNU
grep
:Explicação : O lookbehind
(?<=geometry )
afirma que, na posição atual na sequência, o que precede são os caracteres "geometria". Se a afirmação for bem-sucedida, o mecanismo corresponderá ao padrão de resolução.Um lookbehind não "consome" nenhum caractere na string. Isso significa que, após o fechamento dos parênteses, o mecanismo regex é deixado no mesmo local na string a partir da qual ele começou a procurar: ele não se moveu. A partir dessa posição, o mecanismo poderá iniciar a correspondência de caracteres novamente.
Fonte: http://www.rexegg.com/regex-disambiguation.html#lookbehind
fonte
Minha
awk
abordagem pura , dividindo a string em campos com base em espaços e sinais de adição:Um método semelhante à expressão Perl de Sylvain, mas com
sed
:fonte
Você talvez possa usar
awk
substr
. No seu caso particular:Ou se você quiser que ele funcione em qualquer caso:
Espero que isso ajude.
fonte
Outros já forneceram respostas para a operação completa, mas para responder apenas Como faço para ir
1360x768+0+0
para1360x768
? recomendo usarcut
como a solução mais simples possível, por exemplofonte
Também tentei exemplos de captura de tela de linha de comando há algumas semanas. Como uma solução alternativa, você pode usar
para detectar a resolução da tela.
Para capturar a tela com áudio e microfone interno, você pode usar
fonte