В этом посте затронем тему записи скринкастов под 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. Впечатляет, не правда ли?