Я читаю эту статью . Там есть утверждение, которое гласит:
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
Когда я запускаю команду, я получаю сообщение об ошибке с разделом:
xwininfo -root | grep 'geometry' | awk '{print $2;}'
Причина в том, что когда вы используете эту команду на моем компьютере, она выводит:
1360x768+0+0
Как убрать последнюю часть вывода разрешения экрана 1360x768
вместо 1360x768+0+0
?
command-line
awk
Guest123ABC
источник
источник
Ответы:
Вы можете использовать,
perl
чтобы получить только разрешение:Или даже короче только с GNU
grep
:Объяснение : Lookhehind
(?<=geometry )
утверждает, что в текущей позиции в строке, что предшествует символам «геометрия». Если утверждение выполнено успешно, механизм соответствует шаблону разрешения.Вид сзади не «потребляет» никаких символов в строке. Это означает, что после закрывающей скобки движок регулярных выражений остается на том же месте строки, из которой он начал смотреть: он не двигался. С этой позиции двигатель может снова начать сопоставлять символы.
Источник: http://www.rexegg.com/regex-disambiguation.html#lookbehind
источник
Мой чистый
awk
подход, разбивая строку на поля на основе пробелов и знаков плюс:Метод, подобный Perl-выражению Сильвена, но с
sed
:источник
Вы могли бы использовать
awk
substr
. В вашем конкретном случае:Или, если вы хотите, чтобы это работало в любом случае:
надеюсь, это поможет.
источник
Другие уже предоставили ответы для всей операции, но только для ответа. Как мне добраться
1360x768+0+0
до1360x768
? тогда я бы рекомендовал использоватьcut
как самое простое решение, например,источник
Я также попробовал примеры захвата экрана командной строки несколько недель назад. В качестве альтернативного решения вы можете использовать
для определения разрешения экрана.
Для захвата экрана с внутренним звуком и микрофоном, вы можете использовать
источник