Czytam ten artykuł . Jest tam takie oświadczenie:
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
Po uruchomieniu polecenia pojawia się błąd z sekcją:
xwininfo -root | grep 'geometry' | awk '{print $2;}'
Powodem jest to, że kiedy użyjesz tego polecenia na moim komputerze, wyświetla on:
1360x768+0+0
Jak usunąć ostatnią część wyjścia rozdzielczości ekranu 1360x768
zamiast 1360x768+0+0
?
command-line
awk
Guest123ABC
źródło
źródło
Odpowiedzi:
Możesz użyć,
perl
aby uzyskać tylko rozdzielczość:Lub nawet krócej za pomocą samego GNU
grep
:Objaśnienie : Lookbehind
(?<=geometry )
zapewnia, że w bieżącej pozycji w łańcuchu poprzedzają znaki „geometria”. Jeśli asercja się powiedzie, silnik pasuje do wzorca rozdzielczości.Lookbehind nie „zużywa” żadnych znaków w ciągu. Oznacza to, że po nawiasie zamykającym silnik regex pozostaje w tym samym miejscu w ciągu, od którego zaczął szukać: nie ruszył się. Z tej pozycji silnik może ponownie zacząć pasować znaki.
Źródło: http://www.rexegg.com/regex-disambiguation.html#lookbehind
źródło
Moje czyste
awk
podejście, dzielenie łańcucha na pola oparte na spacjach i znakach plus:Podobna metoda do wyrażenia Perla Sylvaina, ale z
sed
:źródło
Możesz użyć
awk
substr
. W twoim konkretnym przypadku:Lub jeśli chcesz, aby działało:
Mam nadzieję, że to pomoże.
źródło
Inni już udzielili odpowiedzi na całą operację, ale aby odpowiedzieć tylko Jak się dostać
1360x768+0+0
do1360x768
? wtedy poleciłbymcut
jako najprostsze możliwe rozwiązanie, npźródło
Kilka tygodni temu próbowałem również przechwytywać zrzuty ekranu z wiersza poleceń. Jako alternatywne rozwiązanie możesz użyć
do wykrywania rozdzielczości ekranu.
Aby przechwycić ekran z wewnętrznym dźwiękiem i mikrofonem, możesz użyć
źródło