Я пытаюсь использовать gstreamer 0.10 из Python для одновременного отображения источника видео v4l2 и записи его в xvid-in-avi. В течение длительного периода времени компьютер будет достаточно быстрым, чтобы сделать это, но если другая программа использует диск, она сбрасывает кадры. Это достаточно плохо, но при воспроизведении в видео возникают всплески движения, когда кадры пропускаются вместо отображения кадров, которые мы могли кодировать с более низкой частотой кадров.
Трубопровод v4l2src ! capsfilter ! tee ! queue ! xvidenc ! avimux ! filesink
, и тройник также опускается до queue ! xvimagesink sync=false
. Я пытался добавить videorate
перед xvidenc
, но это, кажется, усугубляет ситуацию.
Я рассмотрел подкачку несжатого видео на диск в этом конвейере и кодирование его в фоновом потоке. Что еще я мог сделать, чтобы решить эту проблему? xvidenc
или avimux
делают неправильные вещи с пропущенными кадрами? Могу ли я значительно увеличить размер очереди, предшествующей моему кодеру?