The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Создание скринкастов при помощи FFmpeg
Для создания высококачественных скринкастов, видеороликов отражающих
совершаемые на экране действия, удобно использовать пакет 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" организован пропуск первых 15 секунд
записи и вырезано несколько секунд перед концом (записывается ровно 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
 
14.02.2011 , Источник: http://ubuntuforums.org/showthread....
Ключи: screencast, video, ffmpeg / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Обработка изображений и видео

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Проходимец (?), 07:51, 14/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как же оно дико систему грузит. На моем C2D E6550 при записи картинки 1280х1024 выдаёт ~10-20fps(это без записи звука). Может кто подскажет как можно уменьшить нагрузку на процессор? Может можно видеокарту задействовать как то?
     
     
  • 2.13, User294 (ok), 15:37, 15/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Как же оно дико систему грузит.

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

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

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

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

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

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

     
     
  • 3.15, Zenitur (?), 01:59, 16/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    По первой команде видео захватывается с минимальным сжатием, и только по второй оно кодируется.
     
     
  • 4.16, User294 (ok), 21:25, 18/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Это x264 нынче называется минимальным сжатием? Хренасе минимализм...
     

  • 1.2, Кракен (ok), 09:22, 14/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Web-M бы еше не помешал, раз уж речь про тытрубу.
     
     
  • 2.3, Zenitur (?), 11:37, 14/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Используйте строчку для Theora, заменив кодек на libvp8. По моему субъективному мнению, Theora сравнима с WMV. WebM - с h264, но пока хуже. Записал я первой командой видео (в новости про Wine 1.3.10 оно лежит в WebM), это h264 без сжатия. 3 Мб. Переделал в WebM с тем же параметром. 4,5 Мб. Визуально разницы нет.

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

     
     
  • 3.4, Zenitur (?), 11:38, 14/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Не "без сжатия", а с "минимальным сжатием".
     
     
  • 4.5, Кракен (ok), 12:53, 14/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Это я просот к тому, что тогда ролик скорее всего будет доступень через HTML5 плеер. :)
     

  • 1.6, x0r (??), 13:25, 14/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а может ffv1 вместо libx264 больше подходит для первоначального формата?
    и flac для звука
     
  • 1.7, Семен (??), 13:42, 14/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    -ss 00:00:15 ... организован пропуск первых 10 секунд?
     
  • 1.8, paulus (ok), 16:36, 14/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Закопайте уже этот 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"
     
  • 1.9, Аноним (-), 20:20, 14/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем для скринкаста 30 кадров в сек, хоть убейте не пойму...
     
     
  • 2.14, User294 (ok), 15:45, 15/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Зачем для скринкаста 30 кадров в сек, хоть убейте не пойму...

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

     

  • 1.10, vovans (ok), 21:04, 14/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    знакомая статья....

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

     
     
  • 2.11, Аноним (-), 21:23, 14/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > знакомая статья....
    > http://zenway.ru/page/screencasting-linux-ffmpeg

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

     

  • 1.12, svm (??), 06:44, 15/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Делаю скринкасты кодеком qtrle, он практически не грузит систему во время записи:
    ffmpeg -r 12 -g 120 -s 1280x800 -f x11grab -i :0.0 -vcodec qtrle screencast.mov
     
     
  • 2.17, Zenitur (?), 20:55, 04/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Попробовал. Всё равно не идеально.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру