Прежде всего, не используйте -sameq
: это не означает "то же качество" и недавно было удалено из ffmpeg. Вместо этого вы можете кодировать без потерь с помощью libx264:
ffmpeg -f x11grab -s $(xdpyinfo | grep 'dimensions:'|awk '{print $2}') -r 25 -i :0.0 -codec:v libx264 -preset ultrafast -qp 0 lossless.mkv
Использование кодировщика без потерь быстро; Это означает, что у вас больше шансов фактически захватить с вашей заявленной частотой кадров. Однако выходные данные могут представлять собой огромный файл, поэтому после завершения захвата его обычно перекодируют в более управляемый размер:
ffmpeg -i lossless.mkv -codec:v libx264 -preset medium -crf 23 -pix_fmt yuv420p output.mp4
Если ваш компьютер может справиться с этим, вы можете пропустить промежуточный шаг без потерь и кодировать непосредственно в обычное видео с потерями H.264.
Что касается аудио, в соответствии с HOWTO: Правильная демонстрация экрана в Linux:
Q: Как я могу управлять входом PulseAudio? (например, захватывать звук приложения вместо микрофона)
A: Установите «pavucontrol». Начните запись с помощью ffmpeg.
Запустите pavucontrol. Перейдите на вкладку «Запись», и вы найдете там ffmpeg. Измените захват звука с «Внутреннее аналоговое стерео аудио» на «Монитор внутреннего аудио аналогового стерео». Теперь он должен записывать звук системы и приложений вместо микрофона.
Ваша команда ffmpeg может выглядеть так:
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1024x768 -i :0.0 -codec:a pcm_s16le -codec:v libx264 -preset ultrafast -qp 0 output.mkv
Также см. Руководство по кодированию FFmpeg и x264.