Скринкасты в Linux

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

Вообще, в linux не так много кандидатов, которые могут устроить нас по всем показателям. Как оказалось, найти адекватную программу для указанных целей достаточно проблематично. Выбраны несколько: старый добрый ffmpeg, небезызвестные XVidCap и recordMyDesktop, а также подающий надежды новичок — eidete.

ffmpeg

Что он умеет и как это использовать в посведневной жизни:

"Склеивание" музыки и видео:

$ ffmpeg -i son.wav -i video_origine.avi video_finale.avi

Замена одной звуковой дорожки на другую (например, более качественную):

$ ffmpeg -i new.wav -i video.avi out.avi

Запись скринкаста (запись с монитора компьютера):

$ ffmpeg -f x11grab -s 1366x768 -r 25 -b 1500 -bt 500 -aspect 1,3333 -sameq -i :0.0+0,0 -f alsa -async 1 -ac 2 -i hw:0,0 -acodec libmp3lame ~/MyVideo.avi

В этом примере будет записан также звук.

Перекодирование из одного формата в другой:

$ ffmpeg -i video.avi -f webm video.webm

Извлечение аудиодорожки из видеозаписи:

$ ffmpeg -i video.avi -f mp3 audio.mp3

Запись звука с микрофона:

$ ffmpeg -f alsa -async 1 -ac 2 -i hw:0,0 -acodec libmp3lame sound.mp3

Создание gif-анимации из видео:

$ ffmpeg -i video.avi animation.gif

Получить сведения о видео:

$ ffmpeg -i video.avi

Основные ключи:

  • i - входной файл
  • s - разрешение экрана для нашей записи
  • r - количество кадров в секунду
  • ac - количество каналов (для аудио)
  • qscale - регулировка уровня сжатия
  • bt - битрейт

Проверить поддерживаемые форматы файлов можно командой ffmpeg -formats. Остальное можно найти в мануале - man ffmpeg. Там до вас даже постараются донести, как всё это работает.

Следующий кандидат - XVidCap

Кодирует на лету и имеет множество разных форматов. Автору не подошёл. Это тот редкий случай, когда всё вроде нормально, но субъективно что-то не нравится.

recordMyDesktop

Используют многие. Автору он не подошёл по причине непонятных фризов при записи ролика. Возможно, так отвратно он работает на отнюдь не топовом ноутбуке - нужно больше мощности?

Кроме того, recodrMyDesktop записывает файл в непотребном формате, который всё равно придётся перекодировать.

Имеет и консольный вариант:

$ recordmydesktop --height 400 --width 600 --channels 1 --no-sound --overwrite -o video.ogv

В приведённом примере несложно разобраться: мы запишем файл video.ogv с размерами 600x400 и без звука.

Как создать анимированный gif

Для этого отлично подходит программка byzanz. В официальных репозиториях её может и не быть. Пользователи Archlinux могут найти обсуждаемую деву в AUR.

Сам процесс записи выглядит примерно так:

$ byzanz-record --duration=5 --delay=5 --x=500 --y=500 --width=800 --height=600 myGifFile.gif

где

--x/--y - точки координат
--width/ --height - ширина и высота экрана соответственно
--duration - продолжительность
--delay - задержка перед началом записи

Помимо этого можно скомбинировать возможности ffmpeg и imagemagick:

$ ffmpeg -t 5 -ss 00:00:10 -i MyVideo.mp4 out%04d.gif
$ convert -delay 1x20 -loop 0 out*gif my.gif

Сначала разбиваем видео файл на множество гифок. Затем конвертируем все эти гифки в одну.

Здесь параметр -t указывает продолжительность, -ss начать с начала или после прошествия некоторого времени. При конвертации delay определяет задержку (насколько быстрой будет анимация).

Пример с множеством png-изображений:

$ convert -delay 120 -loop 0 *.png animated.gif

Изменить размер гифки:

$ convert old.gif -resize 600x600\! new.gif

Или обойтись одним только ffmpeg:

# -s - размер
# -r 10 - скорость анимации
$ ffmpeg -i file.mov -s 900x495 -pix_fmt rgb24 -r 10 file.gif

Итог

Ну, что сказать, ffmpeg пока был и остаётся лучшим, хотя если вам нужно добавить звук в записанный ролик, лучше записать звуковую дорожку отдельно - в Audacity, а затем склеить с видео в другой программке - Avidemux. Не забывайте, Avidemux может многое.

Замечу, что один и тот же ролик в .avi и .webm имеет абсолютно разный вес. Рекорд автора: .avi - 70 MB, .webm - 12 MB. Впечатляет, не правда ли?