Запись только одного окна в стандартном настольном рекордере Gnomes 3
У Gnome 3 есть отличная функция под сочетанием клавиш Ctrl-Alt-Shift-R 1. Я предполагаю, что это Стамбул. Похоже, что это не Стамбул... Пока я не могу найти информацию об этой программе.
Где я могу найти справочную страницу? Как я могу запустить его из консоли?
И самое главное: как я могу записать только одно окно (аналогично Alt+Print Screen)?
3 ответа
Согласно документу GNOME API doc, средство записи экрана gnome-shell ( класс shell-рекордера) в основном направляет весь вывод скриншота в конвейер, который затем кодируется GStreamer.
Вы можете использовать приложение dconf-editor и перейти к org.gnome.shell.recorder
В этой схеме вы найдете 3 варианта:
- расширение файла - по умолчанию на моем ящике
webm
- частота кадров - по умолчанию на моей коробке до 30
- конвейер - который по умолчанию направляет к GStreamer vp8enc для кодирования потока.
vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux
Итак, как мы можем воспроизвести конвейер записи в командной строке? Мы можем сделать это с помощью команды gstreamer-tool gst-launch. Во-первых, вам нужно установить gst-tools на свой компьютер и начать играть с gstreamer!. Вот несколько примеров:
Запись на webm (видео vp8 и аудио vorbis):
gst-launch ximagesrc ! ffmpegcolorspace ! queue ! vp8enc quality=10 speed=2 ! mux. alsasrc ! audio/x-raw-int ! queue ! audioconvert ! vorbisenc ! mux. webmmux name=mux ! filesink location=screencast.webm
Нажмите Ctrl+C, чтобы остановить запись.
Запись в ogv (видео theora & аудио vorbis):
gst-launch ximagesrc ! ffmpegcolorspace ! queue ! theoraenc ! mux. alsasrc ! audio/x-raw-int ! queue ! audioconvert ! vorbisenc ! mux. oggmux name=mux ! filesink location=screencast.ogv
Нажмите Ctrl+C, чтобы остановить запись.
Трубопроводы выполняются gst-launch. Вот что они делают:
- Возьмите X видеоизображение (рабочий стол)
- Автоматически конвертировать видео в приемлемый формат
- Создайте фоновый поток [t1], чтобы продолжить обработку видео.
- [t1] Кодировать видео (либо в vp8, либо в theora)
- [t1] Подготовка к объединению видео в видеооболочку (webm или ogg)
- Захватите аудио вход как сырой (микрофон)
- Создайте фоновый поток [t2], чтобы продолжить обработку звука.
- [t2] Автоматически конвертировать аудио в приемлемый формат
- [t2] Кодировать аудио в vorbis
- [t2] Подготовка к объединению аудио в видеооболочку (webm или ogg)
- Запись закодированного аудио и видео в видео файл
Теперь вам больше не нужно бояться конвейеров gstreamer! \ О /
И, самое главное. Как я могу записать только одно окно?
Если вы можете получить XID окна, вы можете передать его в ximagesrc. Например, если вы знаете, что такое уникальный заголовок Window, вы можете использовать xwininfo и немного магии, чтобы получить это. В Баш:
TITLE="Terminal Six"
WINDOW_XID=$(xwininfo -tree -root -all | egrep $TITLE | sed -e 's/^ *//' | cut -d\ -f1)`
Теперь вы можете просто передать этот XID в ximagesrc и, конечно, завершить конвейер:
gst-launch-1.0 ximagesrc xid=$WINDOW_XID ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! ...
И, к вашему сведению, я показываю вам это, используя версию gstreamer 1.0. Больше нет ffmpegcolorspace, вместо этого вы используете видеоконверт (в последних версиях FFmpeg имя было изменено на "libav", поэтому оно было переименовано).
Запись Gnome 3 использует плагин GStreamer FFmpeg для вывода .webm под домом пользователя.
Плагин GStreamer FFmpeg
http://gstreamer.freedesktop.org/modules/gst-ffmpeg.html
И самое главное: как я могу записать только одно окно?
Может быть, увеличить окно на весь экран?