Для создания высококачественных скринкастов, видеороликов отражающих совершаемые на экране действия, удобно использовать пакет FFmpeg. Для работы функции по созданию скринкастов пакет ffmpeg должен быть создан с опцией "--enable-x11grab" (уже используется по умолчанию в Ubuntu и многих дистрибутивах).На первом шаге создаем запись действий на экране, кодеком без потери качества (lossless h264), чтобы потом можно было подготовить несколько версий ролика в разных форматах (например, можно отдельно создать вариант для YouTube и версии с разным качеством кодирования):
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1024x768 -i :0.0 \
-acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output_ll.mkvгде,
"-f alsa -ac 2 -i pulse -acodec pcm_s16le" - записываем стереозвук кодеком pcm_s16le (без потери качества) с использованием звукового сервера PulseAudio (для Linux-систем без PulseAudio можно попробовать "-f alsa -ac 2 -i /dev/dsp" или "-f oss -ac 2 -i /dev/dsp")
"-f x11grab" - драйвер для записи с экрана;
"-r 30" - число кадров в секунду (FPS);
"-s 1024x768 -i :0.0" - размер видео и смещение позиции на экране, напирмер, указав "-s 800x600 -i :0.0+200,100" можно организовать запись блока 800x600 со смещением 200x100 относительно верхнего левого угла экрана;
"-vcodec libx264 -vpre lossless_ultrafast" - выбираем кодек libx264 без потери качества.На втором шаге перекодируем созданный ролик в более компактное представление и отрезав лишние хвосты:
MP4/h.264:
ffmpeg -ss 00:00:15 -t 00:05:01 -i output_ll.mkv -acodec libfaac \
-ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 -threads 0 video.mp4Через опции "-ss 00:00:15 -t 00:05:01" организован пропуск первых 10 секунд записи и вырезано несколько секунд перед концом (записывается ровно 5 минут и 1 секунда).
OGG/Theora:
ffmpeg -ss 00:00:15 -t 00:05:01 -i output_ll.mkv -acodec libvorbis \
-ab 128k -ac 2 -vcodec libtheora -b 1000k video.oggMatroska/h.264:
ffmpeg -ss 00:00:15 -t 00:05:01 -i output_ll.mkv -acodec libvorbis \
-ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 -threads 0 video.mkvAVI/xvid:
ffmpeg -ss 00:00:15 -t 00:05:01 -i output_ll.mkv -acodec libmp3lame -ab 128k -ac 2 \
-vcodec libxvid -qscale 8 -me_method full -mbd rd -flags +gmc+qpel+mv4 -trellis 1 \
-threads 0 our-final-product.aviЕсли необходимо в процессе записи ролика отвлечься и прервать запись, разные куски можно записать в отдельные файлы, а затем объединить их командой mkvmerge:
mkvmerge -o complete.mkv part1.mkv +part2.mkv +part3.mkv +part4.mkv
URL: http://ubuntuforums.org/showthread.php?t=1392026
Обсуждается: http://www.opennet.me/tips/info/2534.shtml
Как же оно дико систему грузит. На моем C2D E6550 при записи картинки 1280х1024 выдаёт ~10-20fps(это без записи звука). Может кто подскажет как можно уменьшить нагрузку на процессор? Может можно видеокарту задействовать как то?
> Как же оно дико систему грузит.А кодирование видео всегда было весьма затратной операцией. Раньше его на ночь оставляли для кодирования 1 сидюка. Ваш Кэп :)
> при записи картинки 1280х1024 выдаёт ~10-20fps(это без записи звука)
Угу, чувак всего-то хотел чуть видео чуть покрче HD 720p в реалтайме кодировать с приличным качеством и фпс-ом :). В камерах этим отдельные чисто аппаратные акселераторы занимаются. Тупые но быстрые и заточенные под это дело.
> Может кто подскажет как можно уменьшить нагрузку на процессор?
Поюзать более простой (но менее эффективный) кодек, например. Или твикануть параметры кодека для максимально быстрого кодирования (в ущерб соотношению битрейт-качество ессно). А вам так принципиально ужать все 1280х1024 с приличным фпс и именно в реальном времени и именно тяжелым кодеком?
А еще - скринкасту хватит 10-15FPS. Уменьшив FPS можно прилично разгрузить проц.
По первой команде видео захватывается с минимальным сжатием, и только по второй оно кодируется.
Это x264 нынче называется минимальным сжатием? Хренасе минимализм...
Web-M бы еше не помешал, раз уж речь про тытрубу.
Используйте строчку для Theora, заменив кодек на libvp8. По моему субъективному мнению, Theora сравнима с WMV. WebM - с h264, но пока хуже. Записал я первой командой видео (в новости про Wine 1.3.10 оно лежит в WebM), это h264 без сжатия. 3 Мб. Переделал в WebM с тем же параметром. 4,5 Мб. Визуально разницы нет.Пробовал с высоким сжатием - отставание еще большее. Но прогресс идет и скоро обязательно будет сравнение сил. Но и MPEG делаются новые.
Не "без сжатия", а с "минимальным сжатием".
Это я просот к тому, что тогда ролик скорее всего будет доступень через HTML5 плеер. :)
а может ffv1 вместо libx264 больше подходит для первоначального формата?
и flac для звука
-ss 00:00:15 ... организован пропуск первых 10 секунд?
Закопайте уже этот h.264... IMHO
Мне хватает и webm:
ffmpeg -an -f x11grab -r 15 -s 1600x1200 -i :0.0 -vcodec libvpx -s 1024x768 -threads 4 -y "`date +%F--%k-%M`.webm"
Зачем для скринкаста 30 кадров в сек, хоть убейте не пойму...
> Зачем для скринкаста 30 кадров в сек, хоть убейте не пойму...Чтобы проц не простаивал почем зря, разумеется. Ведь если проц занят работой менее чем на 80% - вы зря за него платили?! :)
знакомая статья....
> знакомая статья....
> http://zenway.ru/page/screencasting-linux-ffmpegТам перевод http://ubuntuforums.org/showthread.php?t=1392026
Делаю скринкасты кодеком qtrle, он практически не грузит систему во время записи:
ffmpeg -r 12 -g 120 -s 1280x800 -f x11grab -i :0.0 -vcodec qtrle screencast.mov
Попробовал. Всё равно не идеально.