Создание скринкастов c помощью FFMPEG

В последнее время в Интернете все большую актуальность обретают видеоматериалы. Поэтому создание на сайтах видеоконтента становится все более востребованным.

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

В этой статье я хочу поделиться методом создания таких скринкастов с помощью утилиты FFMPEG. Для Windows программ для записи с экрана существует очень много, но для Linux такие программы можно пересчитать на пальцах. У всех этих программ есть в той или иной мере недостатки, которые лично меня не устраивали.

Поэтому я решил делать запись через командную строку с помощью утилиты FFMPEG. Этот метод мне дал наиболее приемлемый результат.

FFMPEG — мощная утилита для конвертации видео разных форматов, которая также поддерживает и запись с экрана. В этой статье я не буду расписывать все его параметры. Хочу только затронуть тему записи скринкастов.

 

Итак распишу порядок записи видео с экрана:

 

1. Устанавливаем FFMPEG

apt-get install ffmpeg

 

2. Включаем запись с экрана

ffmpeg -f x11grab -r 25 -s 1440x900 -i :0.0 -vcodec huffyuv -sameq screencast.avi

где:

-f x11grab — указываем, что мы делаем запись с экрана с помощью x11grab.

-r 25 — задаем частоту кадров, в данном случае 25 кадров в секунду.

-s 1440x900 — устанавливаем размер окна для захвата. В данном случае 1440х900, что соответствует всей области экрана.

-i :0.0 — определяем начало и конец окна. При записи всей области экрана, оставляем значение 0.0. О том, как установить другую область будет говорится ниже.

-vcodec huffyuv — выбираем кодек для записи видео. В данном случае используется кодек huffyuv который записывает видео без компрессии, при этом размеры файла становятся большие, но при записи в этом кодеке, нагрузка на процессор минимальная.

Можно выбрать и другой кодек, например mpeg2video, но есть вероятность, что процессор вашего компьютера не успеет справляться с кодированием на лету, и будет пропускать кадры. Это будет сказываться на качестве сграбленного видео.

Поэтому я рекомендую делать запись в huffyuv, а потом кодировать в другой формат.

screencast.avi — файл, в который будет производится запись. По умолчанию будет создан в папке home. Но если вы хотите создать его в другом месте, перед началом записи откройте эту папку, например cd /media/Video3/screencasts.

После ввода нашей основной команды начнется запись всех производимых на экране действий. Чтобы ее остановить нужно нажать в окне терминала ctrl+c.

 

3. Теперь перекодируем полученное видео в другой формат, например mpeg2.

ffmpeg -i screencast.avi -f mpeg2video -sameq screencast-c.mpg

В результате получаем файл screencast-c.mpg.

 

Запись определенной области экрана

В примере выше рассмотрена запись всей области экрана. Теперь рассмотрим пример записи выбранной части.


ffmpeg -f x11grab -r 25 -s 1294x694 -i :0.0+66,74 -vcodec huffyuv -sameq screencast.avi

различие между первым примером состоит в параметрах -s и -i.

Допустим нам нужно записать видео без меню Unity, а также без верхнего меню браузера. Меню Unity у меня занимает 66 пикселов слева, а верхнее меню браузера 74 пиксела сверху

Вычитаем эти цифры из общего разрешения экрана 1440х900 и получаем окно размером 1374x826. Задаем этот размер через параметр -s,

Теперь задаем начало и конец окна через параметр -i :0.0+66,74.

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