Страница 1 из 1
ffmpeg и рассинхронизация звука
Добавлено: 25 июл 2025, 04:40
Сквозняк
Захватываю часть экрана командой
Код: Выделить всё
ffmpeg -f pulse -thread_queue_size 256 -i alsa_output.pci-0000_01_0a.0.analog-stereo.monitor -f x11grab -r 60 -s 1440x1080 -thread_queue_size 4096 -i :1.0+240 -acodec pcm_s16le -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p -threads 12 grab_4.mkv
Скорости для захвата хватает, но звук сильно отстаёт. Если бы не успевало писать видео, то тогда бы звук впереди был. У ffmpeg вроде как есть способы автоматически синхронизировать звук при записи, -vsync брутфорсил, но пока успехов не добился.
Re: ffmpeg и рассинхронизация звука
Добавлено: 25 июл 2025, 12:42
turik02
При записи экрана с помощью ffmpeg часто возникают проблемы с синхронизацией аудио и видео. Вот несколько способов решения проблемы с отставанием звука:
Re: ffmpeg и рассинхронизация звука
Добавлено: 26 июл 2025, 23:32
Сквозняк
Да вот как-то никак - никаких улучшений синхронизации звука не добился. На других устройствах мощностей для кодирования видео мало, в последний раз когда там захватывал, использовал древний ffmpeg и такую команду, чтобы как-то пожать видео с минимумом тормозов и не мыльно-артефактно:
ffmpeg -video_size 1024x768 -framerate 30 -f x11grab -i :1.0+128,157 -f pulse -i alsa_output.pci-0000_01_0a.0.analog-stereo.monitor -c:v mpeg1video -b:v 20000K -minrate 8000K input.mkv
Это было на славной видеокарте GT 730, наверно потому этот кодек показал наилучшие результаты в скорости и неплохое качество при завышенном битрейте. Райзен этот кодек не оценил, пришлось для x264 опции подбирать:)
Выводить звук через алсу не получилось - не набрутфорсил наверно. А в других случаях наблюдается чёткое отставание звука - где-то программно он тормозится или кладётся в контейнер не с тем таймингом.
Re: ffmpeg и рассинхронизация звука
Добавлено: 27 июл 2025, 16:29
Сквозняк
Нашёл некоторые подводные камни в процессе. Сначала надо определить источники звука:
В команде захвата сначала писать видео, а потом аудио, тогда если рассинхронизация и будет, то мелкая. Причём, большой -thread_queue_size для аудио сильно снижает фпс.
Код: Выделить всё
ffmpeg -f x11grab -r 60 -s 1440x1080 -thread_queue_size 4096 -i :1.0+240 -f pulse -thread_queue_size 256 -i alsa_output.pci-0000_0e_00.6.analog-stereo.monitor -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p -threads 12 -acodec pcm_s32le grab_4.mkv
Также фпс может снизиться, если несколько раз захватывать видео из одной консоли, и если консоль с игрой заезженная. Где-то ресурсы не освобождаются и нужно перезапускать консоли для их освобождения.