LINUX.ORG.RU

ffmpeg ускоряет видео (скринкаст)

 


0

3

Пытаюсь записать видео с экрана с помощью ffmpeg, вроде работает, но итоговое видео ускоряется, причём ускоряется именно в те моменты, когда процессор что-то грузит, например компиляция ядра. Для наглядности пример: https://my.mixtape.moe/cndhhd.webm , внимание на таймер. Пробовал записывать без сжатия, но это не очень помогло, проблема явно в другом, как фиксить?


«Ускоряется» это в смысле, что в нём пропадают кадры, которые ffmpeg не успел закодировать? И, если забирать у кодировщика процессорное время, то как он может закодировать все кадры без протерь?

mky ★★★★★
()
Ответ на: комментарий от mky

Ну а что же мне делать? При обычной записи процессор у меня загружен на 20-60%, все равно дикие разрывы. Я не первый раз видео с экрана пишу, но такое впервые. В конце концов как люди игрушки записывают? Там нагрузка куда выше, а все равно видео нормальное. Возможно можно сказать ffmpeg'u сжирать все рессурсы, которые ему требуются? Ну явно ведь баг, не должно так быть.

chep
() автор топика
Ответ на: комментарий от chep

Ну а что же мне делать?

во-первых, подкрутить настройки кодирования. На кой черт вам фиксированные 60fps? Для скринкастов за глаза хватит 10-15.

во-вторых, кодировать не в VP9, а в AVC. VP9 чрезвычайно прожорлив.

в-третьих, использовать аппаратное ускорение. Если у вас графика NVidia, то nvenc, если Intel или AMD, то vaapi. В случае с vaapi ffmpeg лучше заменить на gstreamer.

Стримеры игрушек либо делают так, либо покупают специальные внешние девайсы для видеозахвата.

anonymous
()
Ответ на: комментарий от anonymous

Даже используя huffyuv я не смог достичь желаемого результата. Достать nvenc на генте просто не смог, нету его во флагах и всё, хотя в вики о нём упоминается.

И всё же, возможно есть способ пофиксить конкретно ускорение? Например заставить ffmpeg тупо забивать в секунду не 60 кадров, а 40, если в 60 он не может в определённый момент. Ну или дублировать кадр, чтобы забить пустое пространство. Я к тому, что подобные решения наверняка есть и успешно используются в другом софте, мне бы это к ffmpeg прикрутить, или просто включить, если подобное присутствует из коробки. Главное ускорения избежать.

chep
() автор топика
Ответ на: комментарий от chep

Huffyuv тоже проц неслабо грузит.

Попробуй при захвате рекомендацию от ffmpeg'а:

-vcodec libx264 -crf 0 -preset ultrafast
. Потом перекодируй, если надо.

С

-vsync
что-нибудь попробуй.

Приоритет увеличь. Доку ещё раз почитай. В чятике на фриноде спроси, на #ffmpeg довольно много народу обычно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.