URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 74695
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Создание скринкастов при помощи FFmpeg"

Отправлено auto_tips , 14-Фев-11 07:51 
Для создания высококачественных скринкастов, видеороликов отражающих совершаемые на экране действия, удобно использовать пакет 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.ogg

Matroska/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.mkv

AVI/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
Обсуждается: https://www.opennet.ru/tips/info/2534.shtml


Содержание

Сообщения в этом обсуждении
"Создание скринкастов при помощи FFmpeg"
Отправлено Проходимец , 14-Фев-11 07:51 
Как же оно дико систему грузит. На моем C2D E6550 при записи картинки 1280х1024 выдаёт ~10-20fps(это без записи звука). Может кто подскажет как можно уменьшить нагрузку на процессор? Может можно видеокарту задействовать как то?

"Создание скринкастов при помощи FFmpeg"
Отправлено User294 , 15-Фев-11 15:37 
> Как же оно дико систему грузит.

А кодирование видео всегда было весьма затратной операцией. Раньше его на ночь оставляли для кодирования 1 сидюка. Ваш Кэп :)

> при записи картинки 1280х1024 выдаёт ~10-20fps(это без записи звука)

Угу, чувак всего-то хотел чуть видео чуть покрче HD 720p в реалтайме кодировать с приличным качеством и фпс-ом :). В камерах этим отдельные чисто аппаратные акселераторы занимаются. Тупые но быстрые и заточенные под это дело.

> Может кто подскажет как можно уменьшить нагрузку на процессор?

Поюзать более простой (но менее эффективный) кодек, например. Или твикануть параметры кодека для максимально быстрого кодирования (в ущерб соотношению битрейт-качество ессно). А вам так принципиально ужать все 1280х1024 с приличным фпс и именно в реальном времени и именно тяжелым кодеком?

А еще - скринкасту хватит 10-15FPS. Уменьшив FPS можно прилично разгрузить проц.


"Создание скринкастов при помощи FFmpeg"
Отправлено Zenitur , 16-Фев-11 01:59 
По первой команде видео захватывается с минимальным сжатием, и только по второй оно кодируется.

"Создание скринкастов при помощи FFmpeg"
Отправлено User294 , 18-Фев-11 21:25 
Это x264 нынче называется минимальным сжатием? Хренасе минимализм...

"Создание скринкастов при помощи FFmpeg"
Отправлено Кракен , 14-Фев-11 09:22 
Web-M бы еше не помешал, раз уж речь про тытрубу.

"Создание скринкастов при помощи FFmpeg"
Отправлено Zenitur , 14-Фев-11 11:37 
Используйте строчку для Theora, заменив кодек на libvp8. По моему субъективному мнению, Theora сравнима с WMV. WebM - с h264, но пока хуже. Записал я первой командой видео (в новости про Wine 1.3.10 оно лежит в WebM), это h264 без сжатия. 3 Мб. Переделал в WebM с тем же параметром. 4,5 Мб. Визуально разницы нет.

Пробовал с высоким сжатием - отставание еще большее. Но прогресс идет и скоро обязательно будет сравнение сил. Но и MPEG делаются новые.


"Создание скринкастов при помощи FFmpeg"
Отправлено Zenitur , 14-Фев-11 11:38 
Не "без сжатия", а с "минимальным сжатием".

"Создание скринкастов при помощи FFmpeg"
Отправлено Кракен , 14-Фев-11 12:53 
Это я просот к тому, что тогда ролик скорее всего будет доступень через HTML5 плеер. :)

"Создание скринкастов при помощи FFmpeg"
Отправлено x0r , 14-Фев-11 13:25 
а может ffv1 вместо libx264 больше подходит для первоначального формата?
и flac для звука

"Создание скринкастов при помощи FFmpeg"
Отправлено Семен , 14-Фев-11 13:42 
-ss 00:00:15 ... организован пропуск первых 10 секунд?

"Создание скринкастов при помощи FFmpeg"
Отправлено paulus , 14-Фев-11 16:36 
Закопайте уже этот 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"

"Создание скринкастов при помощи FFmpeg"
Отправлено Аноним , 14-Фев-11 20:20 
Зачем для скринкаста 30 кадров в сек, хоть убейте не пойму...

"Создание скринкастов при помощи FFmpeg"
Отправлено User294 , 15-Фев-11 15:45 
> Зачем для скринкаста 30 кадров в сек, хоть убейте не пойму...

Чтобы проц не простаивал почем зря, разумеется. Ведь если проц занят работой менее чем на 80% - вы зря за него платили?! :)


"Создание скринкастов при помощи FFmpeg"
Отправлено vovans , 14-Фев-11 21:04 
знакомая статья....

http://zenway.ru/page/screencasting-linux-ffmpeg


"Создание скринкастов при помощи FFmpeg"
Отправлено Аноним , 14-Фев-11 21:23 
> знакомая статья....
> http://zenway.ru/page/screencasting-linux-ffmpeg

Там перевод http://ubuntuforums.org/showthread.php?t=1392026


"Создание скринкастов при помощи FFmpeg"
Отправлено svm , 15-Фев-11 06:44 
Делаю скринкасты кодеком qtrle, он практически не грузит систему во время записи:
ffmpeg -r 12 -g 120 -s 1280x800 -f x11grab -i :0.0 -vcodec qtrle screencast.mov

"Создание скринкастов при помощи FFmpeg"
Отправлено Zenitur , 04-Мрт-11 20:55 
Попробовал. Всё равно не идеально.