Автоматический захват кода

Официальной версии последней версии VLC 3.0.2 для Ubuntu 16.04 LTS нет. Тем не менее, вы можете получить последнюю версию VLC от стороннего упаковщика. Чтобы установить VLC 3.0.2 в вашей системе (Ubuntu 16.04 LTS), напишите следующие команды в своем терминале:

sudo add-apt-repository ppa:jonathonf/ffmpeg-3 
sudo add-apt-repository ppa:jonathonf/vlc-3
sudo apt-get update
sudo apt-get install vlc

Теперь все готово! Обратите внимание, что согласно заявлению упаковщика, поддержка Chromecast для данного пакета VLC Media Player на Ubuntu 16.04 LTS отсутствует. Если вы этого хотите, перейдите на Ubuntu 18.04 LTS.

3
задан 15 April 2018 в 14:31

3 ответа

Хотя я должен сказать, что это «требование» звучит довольно странно, нет ничего невозможного. Вы можете достичь этого с помощью небольшого сценария, как я покажу ниже.

Подготовка

Прежде всего, нам нужно установить некоторые инструменты , Это xdotool для типизации эмуляции и управления окнами и byzanz для видеозаписи. Установите их, используя:

sudo apt install xdotool byzanz

Затем скопируйте код в конце этого ответа и сохраните его как скрипт bash на вашем компьютере, например. как ~/bin/typerec. Если вы сохраните его в папке на $PATH, вы сможете выполнить его без указания его пути. Не забудьте сделать его исполняемым позже, используя chmod +x PATH/TO/SCRIPT.

Использование

Теперь, чтобы записать ввод определенного файла, сначала откройте свою цель редактор, в который мы будем печатать. Удостоверьтесь, что у него есть какая-либо функция «автоматического отступа», иначе отступы введенного кода будут испорчены!

Затем запустите мой скрипт, например. от терминала. Правильный синтаксис -

typerec INPUT_FILE OUTPUT_FILE [DELAY]

, где INPUT_FILE - путь к текстовому файлу кода, а OUTPUT_FILE - путь выходного файла, в котором должна храниться запись. Он должен иметь расширение, принятое byzanz, то есть один из gif, webm, ogg, ogv, flv, byzanz (мои рекомендации выделены полужирным шрифтом). Аргумент DELAY не является обязательным и устанавливает задержку между двумя нажатиями клавиш в миллисекундах. По умолчанию 20, если не указано, я рекомендую не идти ниже 5.

Пример:

typerec /path/to/my/code.py ~/Videos/code.webm 100

Ваш курсор мыши изменится на какие-то перекрестие (не видно на скриншоте ), и вы получите пузырь уведомлений с просьбой щелкнуть окно целевого редактора:

Выполняйте, как вам сказали, но gif ! Если вы не хотите запускать запись, немедленно нажмите Ctrl + C, в то время как терминал все еще сфокусирован и перед щелчком в любом месте.

Внимание! Как только вы нажмете в любом месте, сценарий будет сфокусирован на этом окне и начнет эмулировать все нажатия клавиш, чтобы ввести ваш входной документ через секунду. Это не остановить! Как только это началось, не прикасайтесь к клавиатуре или не щелкните нигде, пока она не закончится! В противном случае ваш вход будет смешиваться с эмулированным входом и может вызвать непреднамеренные действия, такие как открытие / фокусировка других окон или активация быстрых клавиш. Вы должны подождать, пока он не остановится самостоятельно!

Вот и все. После завершения скрипта (обратите внимание, что после завершения записи ему может потребоваться еще несколько секунд для рендеринга и сохранения видео), вы можете открыть записанное видео и проверить результаты.

Вот сценарий:

#!/bin/bash
THIS="$(basename "$0")"
INPUT_FILE="$1"
OUTPUT_FILE="$2"
DELAY="${3:-20}"

show_usage() {
    echo "  Usage:  $THIS INPUT_FILE OUTPUT_FILE [DELAY]"
    echo "where INPUT_FILE is the text file with the content to be typed"
    echo "and OUTPUT_FILE is where the recorded video shall get saved."
    echo "You can set the DELAY between keystrokes in ms (default 20)."
    echo "Note that OUTPUT_FILE will be overwritten if it exists already."
    echo "It must have one of the extensions {gif|webm|ogg|ogv|flv|byzanz}."
    exit 1
}

if [[ -z "$INPUT_FILE" || ! -r "$INPUT_FILE" ]] ; then
    echo "Missing INPUT_FILE argument or file is not existing or readable!"
    show_usage
fi
if [[ -z "$OUTPUT_FILE" ]] ; then
    echo "Missing OUTPUT_FILE argument!"
    show_usage
fi
if [[ ! "$DELAY" -gt 0 ]] ; then
    echo "Invalid argument for DELAY, must be a number > 0 or omitted."
    show_usage
fi

notify-send -i "media-record" "$THIS" "Please select your target editor window."
eval $(xdotool selectwindow getwindowgeometry --shell)
if [[ -z "$WINDOW" || -z "$X" || -z "$Y" || -z "$WIDTH" || -z "$HEIGHT" ]]; then
    echo "Failed to obtain all required target window information. Aborting."
    exit 2
fi

TYPE_COMMAND="xdotool windowactivate --sync \"$WINDOW\" \
              getactivewindow \
              windowfocus --sync \
              sleep 1 \
              type --clearmodifiers --delay "$DELAY" \
                   --file <( tr \\\\n \\\\r < \"$INPUT_FILE\" )"

byzanz-record -e "bash -c '$TYPE_COMMAND'" \
        -x "$X" -y "$Y" -w "$WIDTH" -h "$HEIGHT" \
        "$OUTPUT_FILE" &&

echo "Recording screencast and saving to $OUTPUT_FILE finished successfully."

Альтернативный однострочный

[d36 ] Если вы предпочитаете не сохранять сценарий в любом месте, однострочный, который вы можете просто вставить в терминал, который в основном делает то же самое (но опускает входные параметры и проверки, записывая file.txt как typerec.gif с задержкой 20 мс ) ниже. Вы отвечаете за его редактирование, чтобы использовать правильные пути и убедиться, что все там правильно.

( eval $(xdotool selectwindow getwindowgeometry --shell) ; byzanz-record -e "bash -c 'xdotool windowactivate --sync $WINDOW getactivewindow windowfocus --sync sleep 1 type --clearmodifiers --delay 20 --file <( tr \\\\n \\\\r < file.txt )'" -x $X -y $Y -w $WIDTH -h $HEIGHT typerec.gif )
3
ответ дан 22 May 2018 в 11:25
  • 1
    Это именно то, что мне нужно, оно работает как шарм, большое спасибо:) – dibil08 15 April 2018 в 23:20
  • 2
    @ dibil08 Ницца. Если он решит вашу проблему, подумайте о том, чтобы принять этот ответ, нажав на кнопку «Серая круглая проверка» слева. Спасибо. – Byte Commander 15 April 2018 в 23:23

Хотя я должен сказать, что это «требование» звучит довольно странно, нет ничего невозможного. Вы можете достичь этого с помощью небольшого сценария, как я покажу ниже.

Подготовка

Прежде всего, нам нужно установить некоторые инструменты , Это xdotool для типизации эмуляции и управления окнами и byzanz для видеозаписи. Установите их, используя:

sudo apt install xdotool byzanz

Затем скопируйте код в конце этого ответа и сохраните его как скрипт bash на вашем компьютере, например. как ~/bin/typerec. Если вы сохраните его в папке на $PATH, вы сможете выполнить его без указания его пути. Не забудьте сделать его исполняемым позже, используя chmod +x PATH/TO/SCRIPT.

Использование

Теперь, чтобы записать ввод определенного файла, сначала откройте свою цель редактор, в который мы будем печатать. Удостоверьтесь, что у него есть какая-либо функция «автоматического отступа», иначе отступы введенного кода будут испорчены!

Затем запустите мой скрипт, например. от терминала. Правильный синтаксис -

typerec INPUT_FILE OUTPUT_FILE [DELAY]

, где INPUT_FILE - путь к текстовому файлу кода, а OUTPUT_FILE - путь выходного файла, в котором должна храниться запись. Он должен иметь расширение, принятое byzanz, то есть один из gif, webm, ogg, ogv, flv, byzanz (мои рекомендации выделены полужирным шрифтом). Аргумент DELAY не является обязательным и устанавливает задержку между двумя нажатиями клавиш в миллисекундах. По умолчанию 20, если не указано, я рекомендую не идти ниже 5.

Пример:

typerec /path/to/my/code.py ~/Videos/code.webm 100

Ваш курсор мыши изменится на какие-то перекрестие (не видно на скриншоте ), и вы получите пузырь уведомлений с просьбой щелкнуть окно целевого редактора:

Выполняйте, как вам сказали, но gif ! Если вы не хотите запускать запись, немедленно нажмите Ctrl + C, в то время как терминал все еще сфокусирован и перед щелчком в любом месте.

Внимание! Как только вы нажмете в любом месте, сценарий будет сфокусирован на этом окне и начнет эмулировать все нажатия клавиш, чтобы ввести ваш входной документ через секунду. Это не остановить! Как только это началось, не прикасайтесь к клавиатуре или не щелкните нигде, пока она не закончится! В противном случае ваш вход будет смешиваться с эмулированным входом и может вызвать непреднамеренные действия, такие как открытие / фокусировка других окон или активация быстрых клавиш. Вы должны подождать, пока он не остановится самостоятельно!

Вот и все. После завершения скрипта (обратите внимание, что после завершения записи ему может потребоваться еще несколько секунд для рендеринга и сохранения видео), вы можете открыть записанное видео и проверить результаты.

Вот сценарий:

#!/bin/bash THIS="$(basename "$0")" INPUT_FILE="$1" OUTPUT_FILE="$2" DELAY="${3:-20}" show_usage() { echo " Usage: $THIS INPUT_FILE OUTPUT_FILE [DELAY]" echo "where INPUT_FILE is the text file with the content to be typed" echo "and OUTPUT_FILE is where the recorded video shall get saved." echo "You can set the DELAY between keystrokes in ms (default 20)." echo "Note that OUTPUT_FILE will be overwritten if it exists already." echo "It must have one of the extensions {gif|webm|ogg|ogv|flv|byzanz}." exit 1 } if [[ -z "$INPUT_FILE" || ! -r "$INPUT_FILE" ]] ; then echo "Missing INPUT_FILE argument or file is not existing or readable!" show_usage fi if [[ -z "$OUTPUT_FILE" ]] ; then echo "Missing OUTPUT_FILE argument!" show_usage fi if [[ ! "$DELAY" -gt 0 ]] ; then echo "Invalid argument for DELAY, must be a number > 0 or omitted." show_usage fi notify-send -i "media-record" "$THIS" "Please select your target editor window." eval $(xdotool selectwindow getwindowgeometry --shell) if [[ -z "$WINDOW" || -z "$X" || -z "$Y" || -z "$WIDTH" || -z "$HEIGHT" ]]; then echo "Failed to obtain all required target window information. Aborting." exit 2 fi TYPE_COMMAND="xdotool windowactivate --sync \"$WINDOW\" \ getactivewindow \ windowfocus --sync \ sleep 1 \ type --clearmodifiers --delay "$DELAY" \ --file <( tr \\\\n \\\\r < \"$INPUT_FILE\" )" byzanz-record -e "bash -c '$TYPE_COMMAND'" \ -x "$X" -y "$Y" -w "$WIDTH" -h "$HEIGHT" \ "$OUTPUT_FILE" && echo "Recording screencast and saving to $OUTPUT_FILE finished successfully."

Альтернативный однострочный

Если вы предпочитаете не сохранять сценарий в любом месте, однострочный, который вы можете просто вставить в терминал, который в основном делает то же самое (но опускает входные параметры и проверки, записывая file.txt как typerec.gif с задержкой 20 мс ) ниже. Вы отвечаете за его редактирование, чтобы использовать правильные пути и убедиться, что все там правильно.

( eval $(xdotool selectwindow getwindowgeometry --shell) ; byzanz-record -e "bash -c 'xdotool windowactivate --sync $WINDOW getactivewindow windowfocus --sync sleep 1 type --clearmodifiers --delay 20 --file <( tr \\\\n \\\\r < file.txt )'" -x $X -y $Y -w $WIDTH -h $HEIGHT typerec.gif )
3
ответ дан 17 July 2018 в 16:47

Хотя я должен сказать, что это «требование» звучит довольно странно, нет ничего невозможного. Вы можете достичь этого с помощью небольшого сценария, как я покажу ниже.

Подготовка

Прежде всего, нам нужно установить некоторые инструменты , Это xdotool для типизации эмуляции и управления окнами и byzanz для видеозаписи. Установите их, используя:

sudo apt install xdotool byzanz

Затем скопируйте код в конце этого ответа и сохраните его как скрипт bash на вашем компьютере, например. как ~/bin/typerec. Если вы сохраните его в папке на $PATH, вы сможете выполнить его без указания его пути. Не забудьте сделать его исполняемым позже, используя chmod +x PATH/TO/SCRIPT.

Использование

Теперь, чтобы записать ввод определенного файла, сначала откройте свою цель редактор, в который мы будем печатать. Удостоверьтесь, что у него есть какая-либо функция «автоматического отступа», иначе отступы введенного кода будут испорчены!

Затем запустите мой скрипт, например. от терминала. Правильный синтаксис -

typerec INPUT_FILE OUTPUT_FILE [DELAY]

, где INPUT_FILE - путь к текстовому файлу кода, а OUTPUT_FILE - путь выходного файла, в котором должна храниться запись. Он должен иметь расширение, принятое byzanz, то есть один из gif, webm, ogg, ogv, flv, byzanz (мои рекомендации выделены полужирным шрифтом). Аргумент DELAY не является обязательным и устанавливает задержку между двумя нажатиями клавиш в миллисекундах. По умолчанию 20, если не указано, я рекомендую не идти ниже 5.

Пример:

typerec /path/to/my/code.py ~/Videos/code.webm 100

Ваш курсор мыши изменится на какие-то перекрестие (не видно на скриншоте ), и вы получите пузырь уведомлений с просьбой щелкнуть окно целевого редактора:

Выполняйте, как вам сказали, но gif ! Если вы не хотите запускать запись, немедленно нажмите Ctrl + C, в то время как терминал все еще сфокусирован и перед щелчком в любом месте.

Внимание! Как только вы нажмете в любом месте, сценарий будет сфокусирован на этом окне и начнет эмулировать все нажатия клавиш, чтобы ввести ваш входной документ через секунду. Это не остановить! Как только это началось, не прикасайтесь к клавиатуре или не щелкните нигде, пока она не закончится! В противном случае ваш вход будет смешиваться с эмулированным входом и может вызвать непреднамеренные действия, такие как открытие / фокусировка других окон или активация быстрых клавиш. Вы должны подождать, пока он не остановится самостоятельно!

Вот и все. После завершения скрипта (обратите внимание, что после завершения записи ему может потребоваться еще несколько секунд для рендеринга и сохранения видео), вы можете открыть записанное видео и проверить результаты.

Вот сценарий:

#!/bin/bash THIS="$(basename "$0")" INPUT_FILE="$1" OUTPUT_FILE="$2" DELAY="${3:-20}" show_usage() { echo " Usage: $THIS INPUT_FILE OUTPUT_FILE [DELAY]" echo "where INPUT_FILE is the text file with the content to be typed" echo "and OUTPUT_FILE is where the recorded video shall get saved." echo "You can set the DELAY between keystrokes in ms (default 20)." echo "Note that OUTPUT_FILE will be overwritten if it exists already." echo "It must have one of the extensions {gif|webm|ogg|ogv|flv|byzanz}." exit 1 } if [[ -z "$INPUT_FILE" || ! -r "$INPUT_FILE" ]] ; then echo "Missing INPUT_FILE argument or file is not existing or readable!" show_usage fi if [[ -z "$OUTPUT_FILE" ]] ; then echo "Missing OUTPUT_FILE argument!" show_usage fi if [[ ! "$DELAY" -gt 0 ]] ; then echo "Invalid argument for DELAY, must be a number > 0 or omitted." show_usage fi notify-send -i "media-record" "$THIS" "Please select your target editor window." eval $(xdotool selectwindow getwindowgeometry --shell) if [[ -z "$WINDOW" || -z "$X" || -z "$Y" || -z "$WIDTH" || -z "$HEIGHT" ]]; then echo "Failed to obtain all required target window information. Aborting." exit 2 fi TYPE_COMMAND="xdotool windowactivate --sync \"$WINDOW\" \ getactivewindow \ windowfocus --sync \ sleep 1 \ type --clearmodifiers --delay "$DELAY" \ --file <( tr \\\\n \\\\r < \"$INPUT_FILE\" )" byzanz-record -e "bash -c '$TYPE_COMMAND'" \ -x "$X" -y "$Y" -w "$WIDTH" -h "$HEIGHT" \ "$OUTPUT_FILE" && echo "Recording screencast and saving to $OUTPUT_FILE finished successfully."

Альтернативный однострочный

Если вы предпочитаете не сохранять сценарий в любом месте, однострочный, который вы можете просто вставить в терминал, который в основном делает то же самое (но опускает входные параметры и проверки, записывая file.txt как typerec.gif с задержкой 20 мс ) ниже. Вы отвечаете за его редактирование, чтобы использовать правильные пути и убедиться, что все там правильно.

( eval $(xdotool selectwindow getwindowgeometry --shell) ; byzanz-record -e "bash -c 'xdotool windowactivate --sync $WINDOW getactivewindow windowfocus --sync sleep 1 type --clearmodifiers --delay 20 --file <( tr \\\\n \\\\r < file.txt )'" -x $X -y $Y -w $WIDTH -h $HEIGHT typerec.gif )
3
ответ дан 23 July 2018 в 17:39

Другие вопросы по тегам:

Похожие вопросы: