Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

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

OpenNET - 30 лет. Поддержать можно донатом или подпиской в Boosty

Создание скринкастов при помощи 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:
    Заголовок:
    Текст:




    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: