Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: ffmpeg эксперименты для записи с экрана по расписанию  (Прочитано 1641 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pulchra

  • Автор темы
  • Участник
  • *
  • Сообщений: 160
    • Просмотр профиля
Периодически возникает задача в записи вебинаров, которые хочется посмотреть, но время трансляции которых не совпадает с биоритмами организма - вебинар идёт поздно, а спать охота. Не затрагивая вопрос о лицензионной чистоте можно пользоваться программой для записи скринкастов, которая бы запускалась и выключалась по расписанию и осуществляла корректный захват видео и звука с заданной области экрана. Консольная 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-ом видео с экрана небольшого размера сразу (т.е. без необходимости последующего сжатия)?

 
 

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7970
    • Просмотр профиля
Не знаток параметров ffmpeg, поэтому раасуждения общего плана.
Конечно правильней было-бы захватывать поток, а не "эранную картинку". Будем считать, что это невозможно.
Цитировать
video.mov
Почему непонятно какой mov. По-моему, avi проще и лучше описан.
Цитировать
-acodec pcm_s16le
Звук без сжатия. За пару часов тоже даст пару гигабайт. Уж mp3 вполне по зубам современным компьютерам.
Цитировать
звук и видео рассинхронизировались
Сколько существует сжатие аудио-видео, столько времени известна это проблема. Искать информацию по теме синчронизации аудио-видео. В некоторой стапени зависит от кодеков и контейнеров.
Довольно известен случай, когда при использовании mp3, на некоторых битрейтах возникал рассинхрон, а на некоторых нет. Помню, что для снижения вероятности рассинхрона, для аудио советовали применять постоянный битрейт.
В некоторой степени может повлиять частота ключевых кадров видео. Грубо говоря, потоки синхронизируются во время ключевого кадра.

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.