Я экспериментировал с записывающими видеороликами, используя модуль X11grab FFmpeg, который до сих пор работал более или менее хорошо. Я понимаю, что кодирование a/v представляет собой сложный процесс со множеством мелких деталей, но я стараюсь учиться.Запись FFmpeg screencast: какие кодеки использовать?
Я бы хотел сделать «легкую» запись видеопотока, что при минимальном напряжении в системе, когда записывается поток. Я записываю два аудиопотока отдельно с pacat и sox. Позже все это фильтруется, нормализуется, кодируется и объединяется в контейнер Matroska.
Прямо сейчас у меня есть запись ffmpeg потока rawvideo, который будет передаваться в x264-юукс-дьюксер. Я экспериментировал с ffv1 и прямой записью x264 раньше. Моя система не может обрабатывать кодирование в реальном времени с помощью x264 в настройках, которые я хочу для конечного потока, поэтому мне нужно повторно сжать один раз, как только запись будет выполнена. Я обнаружил, что ffv1 дает мне ужасное падение кадра, и yuv4 тоже, но тем более. Я подозреваю, что это из-за скорости жесткого диска, даже если я сижу в SATA3 Caviar Black, который используется исключительно для хранения записанных данных.
Вопрос в том, какую комбинацию видеокодеков я должен смотреть? Запишите прямо в x264 и снова скомпонуйте «лучше» x264? Сырое видео, затем сжимаете? Как я могу найти такие проблемы, как кадры, которые я испытывал?
EDIT: Это линия ffmpeg, которую я использую в настоящее время.
ffmpeg -v warning -f x11grab -s 1920x1080 -r 30000/1001 -i :0.0\
-vcodec rawvideo -pix_fmt yuv420p -s 1280x720\
-threads 0\
recvideo.y4m
Какова резолюция вашего скринкаста? –
Я записываю весь экран на 1080p и масштабируюсь до 720p на лету. – mkaito
https://trac.ffmpeg.org/wiki/StreamingGuide упоминает некоторые хорошие кодеки для использования – rogerdpack