ZenWay - Linux сегодня!
  • Главная
  • Форум
  • Контакты
  • Архив
  • Гостевая книга
×
Поиск по сайту
ГлавнаяАудио и видео ПОИзучаем LinuxДополнительные материалыСкринкастинг в Linux (FFmpeg)

Скринкастинг в Linux (FFmpeg)

Дополнительные материалы, Изучаем Linux, Аудио и видео ПОПросмотров: 48054Комментарии: 430 октября 2010 г.
Console / FFmpeg / Screencast / Конвертер / Приятные мелочи / Учебные материалы
Скринкастинг в Linux (FFmpeg)

К сожалению, имеющиеся в Linux инструменты для screencasting'а (recordmydesktop, xvidcap, istanbul, wink) делают свою работу не лучшим образом. Качество видео и аудио потоков оставляет желать лучшего. К тому же, нередко имеет место рассинхронизация видео и звука.

Подготовка

Чтобы сделать скринкаст хорошего качества, можно воспользоваться FFmpeg. Единственное только что, FFmpeg придётся самим собирать. На самом деле, это очень просто. Пересборка нужна затем чтобы включить опцию "--enable-x11grab" и ряд кодеков. К тому же, у вас в системе будет самая свежая версия кодеков, что уже очень хорошо. Ведь, как известно, FFmpeg - это вечная альфа.

Screencasting:

Мы будем делать screencasting в два этапа:

  • Захват видео и звука без потерь.
  • Кодирование в более приемлемый для хранения формат, ибо результирующий файл из предыдущего пункта будет достаточно объёмный.

Зачем нужно разбивать процесс на два этапа? Дело в том что процесс сжатия видео потребляет много ресурсов компьютера. И делать это "на лету" (захватывать видео и тут же сжимать его) способен далеко не любой компьютер. То есть, в противном случае мы и будем иметь рассинхронизацию аудио и видео потоков, частичную потерю видео-потока и т.п. "сладости". Если мы хотим получить качественный скринкаст, придётся это делать в два этапа.

1. Захват потока

Синтаксис использования FFmpeg таков:

ffmpeg [input options] -i [input file] [output options] [output file]

А вот рабочий пример:

ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1280x1024 -i :0.0 -acodec pcm_s16le \
 -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv

После введения этой команды начнётся захват видео и аудио потоков на вашем компьютере. Для завершения процесса необходимо нажать клавишу "q".

В приведённом примере мы захватываем аудио-поток поступающий с сервера pulseaudio и кодируем его в сырой PCM (два каната, то есть, стерео). Видео-поток мы захватываем с частотой 30 кадров в секунду и разрешением 1280x1024 с дисплея :0.0 и кодируем его без потерь в h264 используя libx264. Если использовать, как в примере, "-threads 0", FFmpeg сам определяет количество потоков. Результат помещается в контейнер Matroska (.mkv). Результирующий файл "output.mkv" будет сохранен в текущем каталоге. Ничего сложного.

Захватывать можно не весь экран, а какую-то определённую область. Для этого необходимо добавить +X,Y после :0.0, то есть чтобы получилось что-то вроде:

-s 800x600 -i :0.0+200,100

Это значит, что мы будем захватывать прямоугольник размером 800x600 пикселей со смешением по X в 200 и по Y 100 пикселей соответственно.

Так же, можно изменить частоту кадров на желаемую.

2. Кодирование

После того как мы получили огромный файл со скринкастом, нам нужно его сжать. А выбор метода сжатия нужно выбирать в зависимости от нужд.

Пример 1:

ffmpeg -i output.mkv -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 \
 -threads 0 our-final-product.mp4

В данном примере аудио-поток мы кодируем в AAC с битрейдом 128k на канал. Видео-поток же мы кодируем используя кодек высокого качества H.264 используя параметр "slow" и CRF указали равным 22. Чем меньше CRF, тем выше качество, но больше результирующий файл и время кодирования. Разумный диапазон значений от 18 до 28. Результатом будет файл our-final-product.mp4 помещённый в контейнер MP4. FFmpeg определяет тип контейнера автоматически по расширению. То есть, если указать расширение результирующего файла .mkv, то будет использован контейнер "Матрёшка".

Пример 2:

ffmpeg -i output.mkv -acodec libvorbis -ab 128k -ac 2 -vcodec libtheora -b 1000k our-final-product.ogg

Тем, кто предпочитает полностью свободные форматы, как раз будет по душе этот пример. Аудио-поток кодируется используя vorbis, а видео - theora. Для видео указан битрейд 1000k и контейнер .ogg. Качество звука в данном случае будет на высоте, а вот видео... К сожалению, vorbis во всех отношениях уступает распространённым кодекам.

Пример 3:

ffmpeg -ss 00:00:10 -t 00:07:22 -i output.mkv -acodec libvorbis -ab 128k -ac 2 -vcodec libx264\
 -vpre slow -crf 22 -threads 0 our-final-product.mkv

Так как вначале скринкастинка вы некоторое время будете готовиться, да и в конце тоже будет кусочек ненужного видео, эти моменты можно вырезать используя -ss и -t. В примере кодирование начинается спустя 10 секунд и кодируются последующие 7 минут 22 секунды потока.

Так же, в данном примере используются вместе Vorbis/H.264/Matroska - оптимальное сочетание качества!

Пример 4:

ffmpeg -i output.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

В итоге мы получаем типичный AVI с XviD и MP3. Параметр -qscale подобен описанному ранее CRF. То есть, точно так же, чем он ниже, тем выше качество, дольше кодирование, больше файл. Сами выбираем, что нам нужно. Используется avi-контейнер.

Источник: ubuntuforums.org

Автор: vovans
Еще записи по теме
Video Thumbnails Maker
Video Thumbnails Maker
Carla
Carla
YouAmp
YouAmp
JConvolver / Jc_Gui
JConvolver / Jc_Gui
mutagen (python-mutagen)
mutagen (python-mutagen)
Sonic Lineup
Sonic Lineup

Комментариев: 4 RSS

1mishuk18-11-2010 00:02

Спасибо за толковую статью!

Опечатка

и кодируем его в сырой PCM (два каната, то есть, стерео)
.

2dimas08-02-2011 21:19

а как бороться с шумом звука?

3Zenitur05-03-2011 13:05

Нашёл проблему с перекодированием видео с цифрового фотоаппарата. Помогло добавление изменение "-ab 64k -ac 1" на "-ab 64k -ar 44100 -ac 1".

4vovans08-12-2011 16:49

Звук проще всего добавить, дописал что-то вроде этого:

-f alsa -i pulse

И стандартными средствами в Ubuntu можно выбрать источник записи. Ну, или тот же pavucontrol установить.

Либо, можно использовать alsa напрямую:

-f alsa -ac 2 -i hw:0,0
-f alsa -i plughw:1

цифры можно посмотреть в выводе arecord -l. Пример моего выхлопа:

$ arecord -l
**** Список CAPTURE устройств ****
карта 0: DG [Xonar DG], устройство 0: Multichannel [Multichannel]
Подустройства: 1/1
Подустройство №0: subdevice #0
карта 2: Camera [USB Camera], устройство 0: USB Audio [USB Audio]
Подустройства: 1/1
Подустройство №0: subdevice #0

Разрешение экрана можно автоматически ставить используя регулярку:

-f x11grab -r 30 -s $(xwininfo -root | awk '/geometry/ {print $2}') -i :0.0

Итого, для примера, вот:

fmpeg -f alsa -i pulse -f x11grab -r 30 -s $(xwininfo -root | awk '/geometry/ {print $2}') -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 -y screencast.mov

Вы можете войти под своим логином или зарегистрироваться на сайте.

Рубрики
  • Hовости
  • Изучаем Linux
  • Обзоры Linux ПО
    • Hужное/полезное
    • Аудио и видео ПО
    • Графика
    • Офисное ПО
    • Интернет ПО
    • Образовательные
    • Игры
    • Администрирование
    • Системные утилиты
    • Прочие
    • Shareware / Demo
  • Дистрибутивы
  • Дополнительные материалы
Последние комментарии
AzPainter
  • Crocodilero » Ну вот же: //github.com/ Symbian9/ azpainter/wiki/ Packaging- statusУже давно неактуально, нет такого пользователя и репозитория.Ре позиторий разработчицы, а также готовые...
Карты (Gnome Maps)
  • O_Dik » Как добавить спутниковые карты? Или откуда их можно скачать?
Трансляция потока с веб-камеры с помощью ffserver
  • vovans » Беда :(FFmpeg's FFServer feature has been removed from the main release.You'll have to bring up...
MusE - Linux Music Editor
  • Аноним » я её скачал. Ни инстукции, ни мануалов. удалил
  • vovans » Разумно. Тут или понимаешь что делать, или до свидания. Вот так вот ворваться с нуля...
  • BigOrange » мануал официальный самый что ни наесть официальный//muse- sequencer. github.io/docs/ intro.htmlещё разработчики советуют этот форум// linuxmusicians. com/viewforum. php?f=61
WHDD
  • Александр » Привет)Ни кто мне не может подсказать, пожалуйста, в чем у меня проблема: хочу проверить флешку...
  • илья » Привет)Ни кто мне не может подсказать, пожалуйста, в чем у меня проблема: хочу проверить флешку...
fbless
  • totiks » Очень понравилась эта утилита, написал простенький скрипт для выбора книжек с помощью peco , чтоб...
FreetuxTV
  • Алиса » Попробуйте //github. com/yuki-iptv/ yuki-iptv
Форум
[12/02/2025 16:49:16]
openSUSE Tumbleweed, zypper ref, Segmentation fault (core dumped)
[10/02/2025 22:04:59]
Говорильня (дискуссионный клуб)
[23/01/2024 04:13:36]
Утилита запуска команд в трее
[26/07/2023 11:17:45]
Музыкальный калейдоскоп
[16/07/2023 12:24:19]
LFS
[17/04/2023 10:14:08]
Тестовая бродилка на Си с ChatGPT
[18/11/2022 11:54:52]
vscode and c/c++
[31/08/2022 12:25:53]
Tor Browser
[22/05/2022 15:45:40]
Стратегии RTS
Облако меток
2D338 3D241 ALSA68 ASCII120 Android1 Arch Linux38 Audio416 Backup80 Benchmark78 Bluetooth2 C++969 CD48 Console1318 DJ-система17 DVD47 Debian28 DjVu22 Enlightenment19 FFmpeg191 FLTK29 FPS40 FREE155 FTP18 FVWM21 Fluxbox40 GIMP24 GNU26 GPS22 GTK1302 GUI801 Gambas11 Games686 Gentoo3 Gnome349 Gstreamer133 HDD122 HDR7 HTML62 Hex-редактор14 ICQ17 IP-сети25 IP-телефон22 IRC31 ISO39 IceWM22 ImageMagick56 JACK99 Jabber35 Java308 JavaScript115 KDE209 LAN29 LXDE37 LaTeX66 Live-CD70 Live-DVD55 Live-USB53 Lua61 MATE32 MEncoder31 MMORPG12 Mail42 Markdown53 Midi91 Mono53 Mplayer75 MySQL2 OSS9 Open Source14 OpenGL301 Openbox89 P2P51 PDF133 PHP12 Pascal17 Perl102 Phonon27 PulseAudio17 Python759 QT894 RAW34 RPG101 RSS53 RTS42 Roguelike70 Ruby19 Rust15 SDL312 SVG39 Screencast32 Screenshot61 Script78 Slackware66 TOR17 TOX3 Tk39 Torrent67 Ubuntu69 VLC16 Vala64 Web629 WebKit72 WebUI34 WiFi47 Window Maker16 Wine8 XMPP35 Xfce70 Xine14 YouTube80 video4linux27 wxWidgets108 Автоматизация31 Администрирование335 Анонимная сеть47 Антивирус14 Апплет120 Аркада235 Архиватор11 Астрономия36 Аудио конвертер70 Аудио редактор50 Аудиоплеер184 Безопасность243 Бизнес-приложение4 Браузер87 Бродилка203 Бухгалтерия11 Веб-камера36 Видео148
© Zen Way, 2026. Работает на MaxSite CMS | Время: 0.0659 | SQL: 15 | Память: 5.21MB | Вход