Периодически возникает задача в записи вебинаров, которые хочется посмотреть, но время трансляции которых не совпадает с биоритмами организма - вебинар идёт поздно, а спать охота. Не затрагивая вопрос о лицензионной чистоте можно пользоваться программой для записи скринкастов, которая бы запускалась и выключалась по расписанию и осуществляла корректный захват видео и звука с заданной области экрана. Консольная ffmpeg c множеством возможностей и настроек как раз подходит.
Первая проблема, которую требуется решить, это запись вместе с видео и звука не с микрофона, а так сказать "из нутри". Делается это через утилиту pavucontrol (решение подсмотрено тут:
https://forum.ubuntu.ru/index.php?topic=242194.0) путём временной установки во вкладке "Конфигурация" поле "Встроенное аудио" значения "Аналоговый стерео выход".
Далее собственно запись:
ffmpeg -f alsa -i pulse -f x11grab -s 1024x768 -r 25 -i :0.0 -vcodec qtrle -f mov -acodec pcm_s16le -ss 00:01:00 -t 00:06:10 -vf "crop=758:432:15:147" video.mov
Расшифровка некоторых параметров:
-s 1024x768 - разрешение экрана моего ноутбука (в оригинале установка размера видеокадра)
-ss 00:01:00 - время старта записи от запуска команды (по мануалу так метка начальной позиции кодирования)
-t 00:06:10 - время окончания записи она же метка остановки кодирования
-vf "crop=758:432:15:147" - задание области экрана записи, буквально "вырезание" требуемой области для записи в формате длинна:высота:началоХ:началоY.
При таких параметрах пишет корректно, но выходной файл получатся слишком большим, например для 5-ти минутной записи объём получился больше 1Гб,для 2-х часовой записи получиться под 25Гб и больше - многовато.
Пытался разными способами уменьшать объём видео на лету, например:
ffmpeg -f alsa -i pulse -f x11grab -s 1024x768 -r 25 -i :0.0 -vcodec libx264 -crf 22 -acodec pcm_s16le -t 00:05:10 -vf "crop=758:432:15:147" video.mov
Но в этом и ему подобных случаях звук проигрывался нормально, а видео убыстренно, сооветственно звук и видео рассинхронизировались, и где-то на 2-й минуте проигрывания выходного файла плеер вообще подвисал.
Вопрос: как записывать ffmpeg-ом видео с экрана небольшого размера сразу (т.е. без необходимости последующего сжатия)?