Как сделать скринкаст с помощью ffmpeg

Для тех, кто не знает, скринкаст это цифровая запись изображения с экрана компьютера, иногда содержащая аудиозаписи.

En Linux, есть несколько инструменты к Screencasting. Однако те, кто предпочитает это потребляя минимальные ресурсы они не могут перестать читать эту статью.


Используя 2 инструмента (ffmpeg для захвата экрана и xwininfo для получения координат и размеров записываемого окна) мне удалось сделать скринкасты, используя минимальные ресурсы и получая оптимальные результаты.

Скрипт для запуска скринкаста

#! / Bin / Баш

# Получить координаты и размер выбранного окна
# Это исключает оформление окон.
  сбросить xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + Абсолютный верхний левый X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Абсолютный левый верхний угол Y: + ([0-9] +). * / y = 1 / p»
           -e "s / ^ + Ширина: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Высота: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # что ширина кратна 2, иначе ffmpeg жалуется
WIN_XY = $ x "," $ y # формат координат XY
WIN_GEO = $ w "x" $ h # размер окна формата
# notify-send отобразит сообщение с указанием начала скринкаста.
# запустите ffmpeg с параметрами, которые подходят вашей конфигурации.
notify-send «Запуск скринкаста ...» && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset ultrafast - crf 0 -threads 0 save.mp4

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

Аудио архитектура

1) Если вы используете OSS, замените -f alsa -i hw: 0 на -f oss -i / dev / dsp

2) Если вы используете только ALSA, вы должны использовать параметры, которые входят в сценарий (-f alsa -i hw: 0). Чтобы определить номер после hw: вы можете запустить aplay -l и выбрать соответствующий номер звуковой карты.

3) Если вы используете Pulse Audio (Ubuntu и производные от него используют это), используйте параметры -f alsa -ac 1 -i pulse.

FPS

-r 25 указывает количество кадров в секунду (кадров в секунду или кадров в секунду), с которым вы хотите записывать. 25 - хороший вариант.

Аудио, видео и кодек синхронизации

-acodec libmp3lame - аудиокодек. Я выбрал запись в мп3. Можно использовать любой другой.

-async 1 позволяет синхронизировать аудио с видео.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, сообщает ffmpeg, что используемый видеокодек - x264, а предустановка - сверхбыстрая (есть быстрая, медленная и т. кадров в секунду. Параметр -crf 0 указывает уровень сжатия (чем ниже степень сжатия, тем ниже степень сжатия). Наконец, потоки 0 указывают количество используемых потоков, при передаче 0 ffmpeg вычисляет его автоматически. Как и в случае с настройками звука, вы можете выбрать другие параметры.

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

Скрипт завершения скринкаста

#! / Bin / Баш
notify-send "Завершение скринкаста ..." && killall ffmpeg
Для работы обоих скриптов у вас должен быть установлен notify-send. Все дистрибутивы, производные от Ubuntu, должны поставляться с установленным инструментом. В Arch и производных: sudo pacman -S libnotify.

трансляция

В поисках информации для написания сценариев я обнаружил, что у кого-то была идея, очень похожая на мою. Ffcast - это сценарий, в котором используются те же инструменты (ffmpeg и xwininfo). Я упоминаю об этом, потому что некоторым может быть удобнее использовать этот сценарий.

В Arch и производных я открыл терминал и запустил:

yaourt -S ffcast

Остальное вы можете скачать с здесь.

До конца…

После того, как вы создали и сохранили сценарии, сохраненные в папке HOME, вы должны предоставить ему разрешения на выполнение. Предполагая, что вызываются start_screencast и finish_screencast, выполните следующие команды в терминале:

chmod + x start_screencast
chmox + x terminate_screencast

Наконец, остается только назначить каждому из скриптов 2 удобных для вас ярлыка (ярлыков). Таким образом, скрипты будут запускаться при нажатии выбранной комбинации клавиш.


12 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Майкл Сп сказал

    С тех пор как я познакомился с Linux, я задавал себе то же самое, что только что было подробно описано в этом комментарии. это был бы амбициозный проект.

  2.   пфме сказал

    Я думаю, что учебник хорош, но как сказать что-то легкое для начинающих пользователей? Ну, мне кажется лучше всего KAzam, он прост в использовании и, на мой взгляд, не потребляет много !!!!! Ура

  3.   Давайте использовать Linux сказал

    Не все. Кроме того, я искренне верю, что нет хорошего интерфейса для показа экрана (в котором есть все, что мне нужно), который работал бы с нужными мне форматами и потреблял бы мало ресурсов.

    В моем случае терминал - лучший вариант. Я не претендую на то, что это для всех, но хорошо делиться тем, что изучаешь, правда?

    Ура! Павел.

  4.   Хорхе Роча сказал

    Неправильно, что если мы хотим расширить ОС под GNU / linux, мы советуем пользователям делать такие вещи в терминале, людям нужно что-то простое и функциональное.

    @ingjorgerocha

  5.   Whysoyjuan сказал

    На уровне сервера я также использую только консоль, без графической среды ... это наиболее практично, и я делаю все оттуда (например, автоматизирую резервное копирование, как вы хорошо говорите ...), но на машине, которая у вас есть как сервер ... что вы хотите сделать на нем скринкаст? хе-хе..ffmpeg очень хорошо, но я думаю, что проблема с консолью должна уйти в фон, в зависимости от того, какие дистрибутивы.
    Поскольку в мире Linux так много разнообразных дистрибутивов, а консоль достаточно усовершенствована, чтобы работать должным образом во всех ситуациях (скорее, это почти безошибочно ...), мы должны начать улучшать приложения для общественности, начать полировать, код и графический аспект ... это то, что сегодня востребовано.
    У нас есть довольно архаичные и заброшенные проекты Linux, все мы знаем, что ... хороший пример для меня - это то, почему больше нет формата исполняемого файла, который позволяет вам взять программу на флеш-накопитель и просто дважды щелкнуть и просто установка кроме требуемых репозиториев (и, следовательно, сети) .. нет APTonCD, это тоже устарело .. нам нужен стандартный, ".tux" или что-то похожее на ".exe" Windows. Это вопрос места? .. в Windows исполняемый файл GIMP занимает 72 мб, а в Linux (.deb) - 4,2 мб ... почему это? Ну, потому что сама программа GIMP, в Windows она сопровождается всеми библиотеками, чтобы убедиться, что программа работает при установке ... в Linux у нас может быть что-то такое же, исполняемый файл будет занимать больше, мы потеряем преимущество размер, но мы выигрываем в портативности (и многое другое с памятью настолько большой, что мы носим сегодня в наших карманах ... какая разница, чтобы носить 4 МБ, чем 72 МБ, если почти все из нас носят флешки на 8 ГБ?)
    Все это нужно отполировать ... система стабильна, имеет отличную поддержку и совместимость с драйверами ... почему бы нам не улучшить то, что есть? ... если кого-то воодушевят, мы запускаем исполняемый проект хе-хе.!

  6.   Хидабе сказал

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

  7.   Whysoyjuan сказал

    Честно говоря, консоль очень полезна ... но есть программы с некоторым графическим интерфейсом, которые используют ffmpeg и более привлекательны и конструктивны для возможных новых пользователей Linux ... Я рекомендую RecordMyDescktop, который есть в репозиториях почти всех дистрибутивов. Я знаю есть много людей, которые любят консоль, но с этим нужно покончить, насколько это возможно ... Linux должен быть ориентирован на рабочий стол и возможного конечного пользователя, который принципиально этого хочет, графический интерфейс и, если возможно, красивый и практичный ... это так сложно? что мы не можем позволить себе наступить ... Linux имеет огромный потенциал, и мы должны выжать из него!
    Несмотря ни на что, программа отличная! Хороший пост ^^

  8.   Whysoyjuan сказал

    Правда в том, что да, приятно делиться тем, что изучаешь ... Это не критика в обесценивающем смысле статьи, а критика того, почему все больше людей не используют Linux ... что бы они ни говорили, консоль должна быть уменьшена до второй плоскости, чтобы уступить место графическим возможностям (это не означает, что возможность делать что-либо с помощью консоли исключена, но что тот, кто хочет ее использовать, а кто нет, ну, нет ..)
    В конце концов, то, что продается, поражает простота управления ОС ... Linux внутренне непобедим, но если мы добавим к этой простоте использования и интуитивно понятным интерфейсам ... мы выиграем пользователей и это принесет пользу развитие сообщества, различные программы, поддержка со стороны производителей видеоигр и, следовательно, конкретное оборудование (например, видеокарты ...), создание специализированного программного обеспечения, которое в настоящее время существует только на Windows / Mac ... Я не знаю, я думаю, это в плане 15М ... все очень хорошо, но теперь пора немного изменить курс ... и я говорю немного!

    Что ж, стандартный исполняемый проект в Linux все еще стоит, если кто-то его прочитает и захочет, чтобы мы начали сотрудничать, вот мой адрес электронной почты, я не скрываю хе-хе (whysoyjuan@gmail.com)

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

  9.   Давайте использовать Linux сказал

    Хорошо! Хороший вклад.
    Объятие! Павел.

  10.   Херардо сказал

    О чем эта программа ... осторожно, я не очень разбираюсь в этом!

    1.    давайте использовать Linux сказал

      Как правило, он используется для конвертации видео. В этом случае мы продемонстрируем, как использовать его для записи рабочего стола, и, например, сделаем видеоурок.
      Объятие! Павел.

  11.   Таррибалис сказал

    Спасибо. В разрешении, например 1280X800, X должен быть написан с большой буквы, чтобы команда ffmpeg работала.